Выход SQLite UTF-8 с fwrite - PullRequest
       2

Выход SQLite UTF-8 с fwrite

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

Я пытался вывести текст UTF-8, прочитанный из базы данных SQLite, в текстовый файл, используя функцию fwrite, но безуспешно.

Когда я отображаю содержимое в браузере, я могу прочитать его с помощьюнет проблем.В качестве последнего средства я создал те же таблицы в базе данных MySQL, и это удивительным образом сработало!

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

Я использую PDO.

Ниже приведен код, который я использую для чтения из БД и записи в файл:

$arFile = realpath(APP_PATH.'output/Arabic.txt');
$arfh = fopen($arFile, 'w');
$arTxt = '';
$key = 'somekey';
$sql = 'SELECT ot.langv AS orgv, et.langv AS engv, at.langv AS arbv FROM original ot   LEFT JOIN en_vals et ON ot.langk=et.langk
    LEFT JOIN ar_vals at ON ot.langk=at.langk
    WHERE ot.langk=:key';
$stm = $dbh->prepare($sql);
$stm->execute(array(':key'=>$key));
if( $row = $stm->fetch(PDO::FETCH_ASSOC) ){
    $arTxt .= '$_LANG["'.$key.'"] = "'.special_escape($row['arbv']).'";'."\n";
}
fwrite( $arfh, $arTxt);
fclose($arfh);

1 Ответ

1 голос
/ 01 января 2012

В чем может быть причина, как я могу отладить это, чтобы я мог использовать БД SQLite?

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

Если вы сохраняете, скажем, текст LATIN-1 в базу данных, то вы можете прочитать из него текст LATIN-1.

Самому SQLite все равно. Таким образом, вы получаете то, что вы положили.

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

Если там написано UTF-8, тогда хорошо. Вы можете просто просмотреть текстовый файл в редакторе, который не поддерживает UTF-8, для просмотра файлов. Поскольку fwrite также не заботится о кодировке, он просто помещает строковые данные в файл и все.

Так что, пока вы не предоставите дополнительную информацию по своему вопросу, трудно сказать что-то более конкретное.

См. Также: Как изменить кодировку символов соединения PDO / SQLite в PHP?

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