Чтение символов Юникода из MySQL с помощью PHP - PullRequest
0 голосов
/ 16 января 2012

Я унаследовал базу данных MySQL, которая содержит поле с именем Описание типа текста и параметры сортировки latin1_swedish_ci.

Проблема с этим полем состоит в том, что оно содержит данные utf-8 с некоторыми символами Unicode, например, символ 733 и т. д. Иногда этот символ также существует в поле, представленном в кодировке HTML «& # 733».

Я пытаюсь прочитать таблицу и экспортировать данные в файл CSV, и мне нужно представить этот символ в виде двойной кавычки.

Чтение закодированного в HTML символа достаточно просто. Однако, похоже, что настоящий символ Unicode преобразуется в utf-8, прежде чем я могу что-либо с ним сделать, что приводит к «?».

Как прочитать символ Unicode 733 (U + 02DD), распознать и преобразовать его?

Вот упрощенная (не проверенная) версия кода.

<?
$testconn=odbc_connect ("TESTLIB", "......", "......");

$query="SELECT Description FROM TestTable";

$rsWeb=mysql_query($query));

$WebRow=mysql_fetch_row($rsWeb));
$Desc = $WebRow[0];
$Desc = str_replace('"','""',$Desc);

fwrite($output,"\"".$Desc."\",\r\n");
%>

Ответы [ 3 ]

1 голос
/ 22 января 2017

Также установите charset на utf-8 при подключении к серверу SQL:

http://php.net/manual/en/mysqli.set-charset.php

$mysqli->set_charset("utf8");
0 голосов
/ 16 января 2012

Вы действительно должны поместить в базу данных только версию, не являющуюся сущностью (Unicode), а остальную часть - декодировать сущность. Однако, когда вы хотите использовать UTF-8 с MySQL, нужно помнить несколько вещей:

  • Параметры сортировки столбца таблицы должны быть utf8_bin или аналогичными.
  • Параметры сортировки вашей таблицы и базы данных также должны быть на всякий случай utf8_bin.
  • Ваша кодировка соединения должна быть UTF8. Сделайте это, выполнив запрос «SET NAMES utf8».

Кроме того, если вы выводите HTML-страницу, она также должна иметь кодировку UTF8. Если все правильно, символы UTF8 должны получиться в порядке.

Удачи!

0 голосов
/ 16 января 2012

Я думаю, что ваша кодировка соединения не utf8, поэтому символы преобразуются в '?'.

Читать это: http://dev.mysql.com/doc/refman/5.1/en/charset-connection.html

Опубликовать результат для запроса: показать переменные типа 'char%';

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