PHPでPDO / SQLite接続の文字エンコーディングを変更する方法は?

StackOverflow https://stackoverflow.com/questions/263056

  •  06-07-2019
  •  | 
  •  

質問

utf8以外の文字列を実行し続けるphp-gtkアプリに少し問題があります。データベースがUTF-8であると想定されている場合でも、データベース接続に問題があることがわかりました。

" SET CHARACTER SET utf8"(MySQLの方法)と" SET NAMES UTF8"そして何も起こりません(" SQLiteが理解しているクエリ言語には、このコマンドのどれもに関する情報はありません。 "いずれかのページにあるので、私はそれについて驚くことはありません)。

PD:接続はすでにUTF-8であり、データはそうではないかもしれませんが、接続エンコーディングを変更する方法があれば、この質問はまだ役に立ちます。

役に立ちましたか?

解決

私が知る限り、 SQLiteにはcharsetの設定が1つしかありません。データベースごとのレベルです。接続のエンコードを変更することはできません。

C APIには、接続を開くための 2つの異なる方法があり、UTF- 8またはUTF-16。 PHPのSQLiteモジュール(およびPDO)がUTF-8バージョンを使用することを期待します。それが正しい場合、SQLite接続は常にUTF-8であると予想されます。つまり、 utf8_encode を使用して、文字列を手動でエンコード/デコードする必要があります。 / utf8_decode

また参照: http://www.alberton.info/dbms_charset_settings_explained.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top