Сведения о вопросе

FUTER

13:08, 5th August, 2020

Теги

Как вы устраняете проблемы с кодировкой символов?

Просмотров: 394   Ответов: 3

Если все, что вы видите, это уродливые коробки без символов, какие инструменты или стратегии вы используете, чтобы выяснить, что пошло не так?

(Конкретный сценарий, с которым я сталкиваюсь,-это коробки без символов внутри <select>, когда он должен показывать японские символы.)



  Сведения об ответе

dump

09:58, 18th August, 2020

Во-первых, "ugly no-char boxes" не может быть проблемой кодирования, они могут быть просто признаком того, что у вас нет установленного шрифта, который может отображать глифы на странице.

Большинство проблем с кодированием символов возникает, когда строки передаются из одной системы в другую. Для веб-приложений это обычно происходит между браузером и приложением, между приложением и файловой системой и между приложением и базой данных.

Поэтому вам нужно проверить, откуда поступают неверно закодированные данные, какую кодировку символов они имеют в источнике и в какой кодировке они принимаются. Самый лучший способ-это отправить через персонажей, с которыми у системы возникли проблемы, и изучить их на каждом уровне приложения. Как они выглядят внутри приложения? В базе данных? Когда вы получите их обратно из базы данных? Когда они отображаются в браузере?

Извините, что я так обобщаю, но этот вопрос не дает нам много работы.


  Сведения об ответе

ASSembler

15:49, 14th August, 2020

Если данные, которые вы отправляете в браузер, будут искажены (moji-bake), вы получите символы корзины. Кроме того, если вы укажете неверный набор символов в заголовках META, Ваш браузер будет отображать страницу неправильно, вызывая moji-bake снова, иногда в случайных местах на странице.

При обработке наборов символов CJK необходимо обязательно использовать кодировку символов UTF8 в течение всего срока службы программы (хранение данных, извлечение, манипулирование данными в коде, отображение в браузере и т. д.)...)

Что такое UTF8? UTF8 обрабатывает двоичные потоки данных, а не строки. Это означает, что битовые комбинации могут иметь переменную длину. ASCII символа имеют фиксированную длину 8 бит, представляющую 1 байт, однако символы UTF8 могут состоять из 6 бит,8 бит, 12 бит и т. д... Таким образом, UTF8 склонен к тому, что японцы называют "mojibake".

Как кодер, от базы данных до кодовой базы и браузера, вы должны попробовать использовать UTF8 полностью. Для email вы можете использовать UTF8, но вы, вероятно, найдете, что большинство почтовых серверов и клиентов все еще старые и используют мешанину различных наборов символов (например, ISO9022X).

Параметры базы данных Если вы являетесь пользователем mysql, то убедитесь, что все соединения с DB используют UTF8 и что все таблицы/поля используют UTF8. По умолчанию mysql использует латинские (шведские) наборы символов. Эти чокнутые шведы обожают свое чувство юмора!!

Проверка вашей кодовой базы в редакторах моего опыта, таких как Notepad++, Notepad2, UltraEdit, e и т. д... все они имеют проблемы с поддержкой UTF8. Они в основном работают, но поскольку их разработчики сами не используют языки CJK, они не совершенствуются. Такие проблемы, как отключение BOM (метка порядка байтов), искаженные вкладки, плохое преобразование набора символов и т. д... все нынешние проблемы.

Я настоятельно рекомендую использовать проверенный редактор UTF8, такой как Maruo. Это сделано японской компанией, но есть английская версия (и пробная версия) на http://www.hidemaru.interlink.or.jp/software/

Наконец, вам может потребоваться конвертировать исходные файлы в UTF8. Особенно если сама кодовая база содержит CJK языковых строк, содержащихся в ней.

Манипулирование строками любая строковая функция должна быть многобайтовой безопасной. Заметьте, я не сказал "двухбайтовый". UTF8 - это не двойной байт, а многобайт, в зависимости от общего числа битов, используемых для представления символа. В PHP вам нужно специально вызвать строковые функции MB. Ruby и другие языки имеют более прозрачную поддержку, но вам нужно проверить документы на ваш вкус сервера приложений!

Мета-теги проверяют google.co.jp или yahoo.co.jp на их заголовки META. Это сайты, которые знают, как к нему правильно подойти. В основном включают в себя следующие META тегов doucment <HEAD>

<meta http-equiv="content-type" content="text/html; charset=utf-8">

Это, как правило, безопасный для смешивания английский тип документа HTML атрибутами тоже с вышеуказанным персонажем. Таким образом, добавление тега META выше, кажется, работает в документе HTML, который имеет:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

Email это совершенно другая банка с червями. UTF8 работает много, но многие старые японские клиенты используют ISO2022X больше. Это не стоит здесь освещать.

Отладка проблем UTF8 после того, как у вас есть надежный редактор UTF8, такой как Maruo, вы можете создавать статические страницы и решать свои проблемы.

Надеюсь, это поможет


  Сведения об ответе

nYU

20:28, 15th August, 2020

Перенаправьте данные на диск и используйте редактор Hex . Большинство текстовых редакторов / зрителей выполняют свои собственные преобразования за кулисами, поэтому трудно быть уверенным, что вы видите данные в их истинном виде.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться