3

私はjsonデータを持っています。次のように、json ファイルに「キリル文字」の文字列があります。

\u0418\u0432\u0430\u043D\u043E\u0432 \u0418.

jsonをデコードしてこのデータをデータベーステーブルに入れると、文字列が得られます

Иванов И.

あるデコード Web サイトで、この文字列を入力したところ、非常に良い結果が得られました (これは必要なものです) 。

Иванов И.

また、こちらのサイトではCP1252からUTF-8に変換したとのことでした。そこで、手動でデコードした後、jsonからデータを変換しようとしました

mb_convert_encoding ( $string, "UTF-8","windows-1252");
mb_convert_encoding ( $string, "UTF-8","CP1252");

iconv("windows-1252","UTF-8",$string);
iconv("CP1252","UTF-8",$string);

この関数のいずれかが、データベース テーブルの文字列を次のようにしました。

Øòðýþò ÃËœ.

また

Øòðýþò Ø.

どちらも上記のサイトで正しくデコードされていません。問題は、この文字列をどのように変換するかです。

Upd:このSQLリクエストを使用しました:

ALTER DATABASE logenterprise
    CHARACTER SET utf8

上記と同じことを試してみました-結果は同じです。念のためこれも試しました:

alter table mytable convert to CHARACTER SET utf8 COLLATE utf8_unicode_ci;
4

1 に答える 1

1

呪いのエンコーディング ^^ 私も苦労しました。

すべてが正常に見えました (データベース、入力データのエンコード、および Web サイト上) が、それでもテーブルに不可解な文字が含まれています。では、何が問題なのですか?データベースサーバーへの接続です。

幸いなことに、これは簡単なクエリで修正できます。

mysql 接続を確立した直後、次のクエリを実行する必要があります。

mysql_query("SET NAMES 'utf8'");

ほら。INSERT-Query を実行すると、データが適切にデータベースに保存されます。

「ウムラウト」と€記号を扱っていたので、これで何度も尻を救われました。


注: mysql_xxx メソッドは廃止されたため、使用しないでください。コードをわかりやすくするために、例でそれらを使用しました。

于 2013-05-10T21:18:54.270 に答える