1 に答える
データは JSON から取得されるため、Unicode 文字セットでエンコードする必要があります。デフォルトは UTF-8 [出典: Douglas Crockford、RFC4627 ]です。
これは、非 ASCII 文字をデータベースに格納するには、入力データのエンコーディングをデータベースの文字セットに変換するか、(できれば) データベースに Unicode 文字セットを使用する必要があることを意味します。最も一般的な Unicode 文字セット (この目的で使用することをお勧めします) は UTF-8 です。
データベースがラテン文字セット ( ISO-8859-* ) の 1 つを使用して設定されている可能性があります。既存のデータ - 現在、下位 128 文字以外の文字を使用するレコードがないことを前提としています。上記のコメントに基づいて、phpMyAdmin を使用してこの変更を行うことができるはずです。必要な既存の各列を変更する必要があります。明示的に変更するには、テーブル/データベースの文字セットを変更すると、文字セットを指定せずに作成された新しい列/テーブルにのみ影響します。
クライアントにデータを出力するときは、文字を正しく表示する方法を認識できるように、UTF-8 を出力していることをクライアントに伝える必要もあります。これを行うには、テキストベースのコンテンツと共に送信; charset=utf-8
するヘッダーに必ず追加します。Content-Type:
たとえば、UTF-8 でエンコードされた HTML を生成する PHP スクリプトの先頭に、次の行を追加します。
header('Content-Type: text/html; charset=utf-8');
ドキュメント自体の中でドキュメントの文字セットを宣言することもお勧めします。この宣言は、ドキュメント内に存在する非 ASCII 文字の前に<meta>
記述する必要があります。そのため、次のタグを の最初の子として配置することをお勧めし<head>
ます。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
先頭に XML 宣言がある XHTML を作成している場合は、<meta>
タグを使用する代わりに、そこで文字セットを宣言できます。
<?xml version="1.0" encoding="UTF-8" ?>
Content-Type:
ヘッダーでの文字セット定義の使用は、これに限定されないことに注意してください。これは、任意のファミリ MIME タイプtext/html
のコンテキストで意味があります。text/*
参考文献:テキストを操作するためのエンコーディングと文字セットについて、すべてのプログラマーが絶対に、積極的に知っておく必要があること
また、必ずマークアップを検証してください。