| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > как узнать название кодировки? |
| Автор: ilyalyu 15.9.2008, 19:08 | ||||
Такая проблема. Имеется текст содержащий русские символы. Его нужно сохранить в формате HTML. Для того чтобы русские символы нормально отображались в браузере, к HTML-коду необходимо добавить:
где CHARSET_NAME - название кодировки. В моем случае это "Windows-1251", т.е. добавлять нужно:
Однако, у пользователя может быть не русская Windows и совсем другая кодировка. Поэтому название кодировки надо определить программно (а не подсмотреть в браузере). Вот в этом и вопрос. (Небольшое уточнение: текст не прислан с какого-то другого компьютера, а набран внутри самой программы, например, в TMemo; т.е. задача - не пытаться распознать кодировку неизвестного текста, а определить какая кодировка была использована в компоненти TMemo). |
| Автор: Matematik 15.9.2008, 19:42 |
| > Однако, у пользователя может быть не русская Windows и совсем другая кодировка. Все современные (и не очень) браузеры знают кириллицу (Windows-1251). Текст будет отображаться в той кодировке которую укажешь в META. |
| Автор: aleksh 15.9.2008, 20:06 |
| а откуда мы узнаем какие буквы русские? откуда текст? точно надо указывать, ибо если потом читать браузерам -- большинство само выбирет правильную кодировку? юникод может быть? а если по сути -- если память мне не изменяет, то смотрится в каком диапазоне код символа |
| Автор: Snowy 15.9.2008, 21:05 |
| DRKB Системные функции и WinAPI -> Windows -> Шрифты, языки, кодировки -> Многоязычие, локализации и перекодировка -> Распознавание кодировки |
| Автор: ilyalyu 15.9.2008, 23:11 |
| To Snowy: спасибо за ссылку, но там рассматривается несколько другой вопрос. Там рассматривается случай, когда имеется текст неизвестного происхождения и нужно определить в какой он кодировке. У меня ситуация другая: текст набран в программе и отображается, допустим, в TMemo. Поэтому мне не нужно анализировать сам текст (тем более что этот метод ненадежен). Достаточно программно определить, какая кодировка используется в TMemo. |
| Автор: Snowy 16.9.2008, 13:37 |
| Тогда проще. GetTextCharsetInfo |
| Автор: ilyalyu 16.9.2008, 14:28 | ||
Спасибо, действительно GetTextCharsetInfo(Canvas.Handle) возвращает номер чарсета, а по нему уже можно востановить и название
Вопрос закрыт |