Unicode. Как много в этом слове. Сейчас использовать юникод в вэб приложениях - это уже не просто хороший тон, а стандарт.
Но с юникодом бывает много проблем, т.к. для начала наиболее расспространенные операционные системы используют "снаружи" однобайтовые кодировки и на этапе создания основных языков програмирования поддержка UTF не была заложена. Юникод был предложен как универсальная кодирвка в 1991 году, и в 1993 уже использовалась версия 1.1. Сейчас при слове "юникод" у большенства всплывает в голове аббревиатура UTF-8. Но честно говоря UTF-8 - это не юникод. Чуть более внимательно вчитавшись в определения можно подчеркнуть, что "Юникод" - это стандарт кодирования символов. А UTF-8 - кодировка, реализующая представление Юникода. Основная черта UTF-8 заключаеться в том, что первые 128 символов совпадает с ASCII, что дает обратную совместимость с ПО "не умеющим" юникод.
Всеже "Настоящим" юникодом считается UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE. Собственно первая версия кодирования юникода была 16-битной, с фиксированной шириной символа. Windows начиная с 2000 внутри себя использует UTF-16LE. В мире *nix принято использовать UTF-8.
И наконец о том, как все это касается нас. Редактирование файлов в нужной кодировке, темпаче если она отличается от системной становится не найтивной. Впрочем всегда решается удачным редактором, или толковым IDE. Для простых целей - это EditPro (win) и JOE (*nix). Тексты - это только пол беды. Оснавная беда - это языки програмирования. Про С/С++ говорить не имеет смысла, т.к. язык достаточно низкого уровня и собственно является основой для всего остального. А все остальное - это как минимум JAVA, Perl, PHP, Python, etc..
О некоторых тонкостях стоит рассказать. От простого к сложному.
JAVA - найтивно поддерживает юникод. JDK 1.5 полностью реализовывает стандарт Unicode 4.0.
PHP - впринципе при работе с UTF-8 не возникает никаких проблем. Пока речь не доходит до регулярных выражений и мультабайтных строчек. Есть несколько библиотек, которые решают возникающие проблемы, не считая iconv конечно. Собственно для поддержки всего рациона кодировок в PHP есть mbstring.
Perl - изначально работает на своей собственной кодировке, т.е. имеет внутренние представление текста. Впринципе при работе с однобайтными кодировками это не заметно, т.к. кодировка определяется автоматически. В остальных случаях её следует указывать для источника данных и для вывода. Тут неплохо об этом написано. Вообщем ясная документация дает все ответы:
http://perldoc.perl.org/functions/open.html
http://perldoc.perl.org/Encode.html.
Пример работы с разными кодировками в Perl:
open(SQLFILE, "<:encoding(UTF-16LE)", $SQL_files{$item})
$current_sql_query =~ s/\x{FEFF}//g; ## срезаем спецсимволы.
$current_sql_query_utf8 = encode("UTF-8",$current_sql_query);
Об остальных языках я пожалуй говорить не буду.
На закуску, настоящий юникод: http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html
Да, есть ещё одна забавная штука - юникод в виндовой консоле.
Ставим PowerShell, в нем помимо иных возможностей можно менять кодировку на лету:
$OutputEncoding = [System.Text.Encoding]::UTF8
Другие материалы:
http://docs.activestate.com/activeperl/5.10/lib/Encode/Unicode.html
http://www.utf8-chartable.de/
http://www.php.net/manual/en/regexp.reference.php
http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
http://www.mapbender.org/Encoding_UTF8/ISO8859-1#utf8_decode
http://webcollab.sourceforge.net/unicode.html