Здравствуйте, Alex Dav, Вы писали:
AD>Просто я не понимаю как это работает — поэтому и вопрос такой не понятный.
AD>вот я вставил строку ä, ö, ü, Ä, Ö, Ü, ß, € — все символы нормально отобразились — как? я же не /1233 (к примеру) вставлял.
AD>а вот они же из другого текстового редактора Г¤, Г¶, Гј, Г„, Г–, Гњ, Гџ, € — почему неправильно отбразились?
Потому что ты строку, закодированную в UTF-8, интерпретировал как cp1251 (windows-cyrillic).
А так как UTF-8 — мультибайтная кодировка, получилось, что некоторые одиночные буквы (закодированные 2-3 байтами) превратились в многобуквенные комбинации.
Вообще, несоответствие подразумеваемой и фактической кодировок даёт такое обширное поле для ошибок и непониманий, что проще указать конкретное место, чем говорить про "вообще".
Например, юзер руками ввёл в ричедит текст (а поскольку контрол юникодный, и внутри работает вообще с UCS-2, то вставить туда можно что попало). Затем ты программно оттуда извлёк этот текст в некоторой заданной кодировке. Если кодировка однобайтная — произойдёт срезка (некоторые символы превратятся в квадратики/вопросики, пропадут диакритические знаки и т.д.)
Если же UTF-8, то ты должен дальше с этой строкой работать именно как с UTF-8:
— сохраняя в простой текстовый файл, не забудь записать префикс (три байта, не помню что там должно быть — поищи сам)
— сканировать строку не побайтно, а посимвольно
— перекодируя обратно в UCS-2, UTF-16 или в дефолтную кодировку системы (пусть со срезкой), указывать правильную исходную кодировку
... << RSDN@Home 1.2.0 alpha rev. 655>>