2012-01-26 3 views
0

У меня проблема с кодировкой символов в Firefox. Когда я копировать/вставить абзац из Microsoft Word (2007), он мог содержит специальный символ, как это (точки/квадраты, чтобы сделать список или цитата):Странная кодировка символов в Firefox

 Te’st 
 Ze’f 
• Gzg’a 

цитата отличается по сравнению с этой цитатой ' (набирается напрямую с клавиатуры). Поэтому я вставляю это в текстовое поле и сохраняю (используя AJAX в некотором случае). В базе данных (которая имеет сортировку latin1_swedish_ci) она отлично выглядит. Но когда эти данные снова редактируются с помощью Firefox, он показывает странные двоичные символы. Прекрасно работает в Chrome и IE.

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

Примечание: Вы также можете проверить, просмотрев этот пост в Chrome и FF

+2

Необходимо изменить кодировку базы данных (возможно, для UTF-8). AFAIK нет другого пути вокруг этого, который не потеряет часть информации. – DaveRandom

+0

Собственно, подумав об этом, вы можете хранить данные в столбце BLOB - но почему вы не можете просто изменить кодировку? – DaveRandom

+0

Изменение кодировки базы данных означает риск потери информации из-за конверсии. Но проблема здесь в Firefox ... Я думаю о создании сценария для преобразования странных символов в charset iso8859. –

ответ

0

символов, которые вы copypasted (при условии, что они получили правильную передачу в этом форуме) содержат, в дополнении к буквам, три вхождения U + 2019 ПРАВА SINGLE QUOTATION MARK, который является правильным апострофом пунктуации на английском и многих других языках, одно появление U + 2022 BULLET, которое звучит нормально, и два вхождения U + F0A7, который находится в диапазоне личного пользования (PU), и не должен использовать общественный обмен информацией только для особых целей по взаимным соглашениям между заинтересованными сторонами.

Возможно, что некоторые обозначения в документах Word 2007 преобразуются в символы PU в копии и вставке, но, как минимум, нормальный список bullet обычно становится U + 2022 BULLET. Так что это немного загадка, откуда появляются персонажи PU.

Что касается одинарных кавычек, они также представляются в окнах-1252, и latin1_swedish_ci, кажется, покрывает его (хотя это, насколько я понимаю, просто определение порядка сортировки, а не кодировка символов). И, как вы говорите, данные хорошо смотрятся в базе данных, кажется, что проблема заключается в том, как данные записываются в HTML-документе, обслуживаемом в браузере.

В частности, если кодировка страницы, на которой представлены данные, является UTF-8, и фактические данные присутствуют в кодировке windows-1252, возникают проблемы. Это будет означать проблему, подобную той, которую вы описываете, поскольку U + 2019 закодирован как 0x92 в Windows-1252, и это вызывает ошибку данных на уровне символов при интерпретации UTF-8.

Вы можете проверить ситуацию, используя Просмотреть → Кодировка в Firefox при просмотре страницы результатов. Если моя гипотеза верна, вы увидите там UTF-8 и измените ее на «Западноевропейский (Windows-1252)», чтобы отобразить одиночную кавычку (и может сильно испортить другие вещи на странице).

Смежные вопросы