sql или php неправильно отображают датские буквы Æ Ø Å - PullRequest
0 голосов
/ 01 октября 2018

У меня есть файл .tsv с использованием датских букв, таких как Æ Ø Å.Файл загружается в php с помощью file_get_contents();, а затем обрабатывается и отправляется в запрос mysqli.

Я попытался поместить <?php header('Content-Type: text/html; charset=utf-8'); ?> в самый верх кода.также используя метатег <meta charset="UTF-8">

, и в моем SQL у меня есть строки, созданные как:

text COLLATE utf8_danish_ci NOT NULL

и:

PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci AUTO_INCREMENT

и:

$conn->set_charset("utf8");

.... Но все равно не повезло.

Если я открою свой файл .tsv в Excel, то он правильно показывает Æ Ø Å.Но когда открывается с «TextEdit» на Mac.«Ø Å» показывает как «¯ ¯ ¯»

ОБНОВЛЕНИЕ - РЕШЕНИЕ, поскольку принятый ответ означает, что я должен использовать CP1252:

mb_convert_encoding($fileEndEnd, 'HTML-ENTITIES', "CP1252");

1 Ответ

0 голосов
/ 01 октября 2018

Есть много вещей, которые следует учитывать с UTF-8.Но я вижу один ваш конкретный комментарий ...

Если я открою свой файл .tsv в Excel, то он правильно показывает Æ Ø Å.Но когда открывается с «TextEdit» на Mac.«Ø Å» выглядит как «¯ ¯ ¯»

Проблема ...

Если вы говорите о MicroSoft Excel, то вам следуетЗнайте, что приведенные выше символы находятся в кодировке UTF-8 и кодировке LATIN_1_SUPPLEMENT (часто называемой CP1252).Взгляните: LATIN_1_SUPPLEMENT Block

Если вы сохраняете этот документ, не устанавливая его кодировку в UTF-8, то у Windows не будет причин преобразовывать этот текст из CP1252 ив UTF-8.Но это то, что вам нужно будет сделать.

Возможные решения ...

На вашем сервере: вы можете попытаться декодировать любую кодировку Windows или «неизвестную» кодировкуот CP1252 до UTF-8.(Поскольку Windows будет сохранять документы «в соответствии с настройками системы по умолчанию», эта информация может исчезнуть к тому времени, когда она попадет на ваши серверы Linux.)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...