ホームページ  >  記事  >  バックエンド開発  >  私を悩ませていたエンコード問題(漢字化けの原因)が解決しました! ! !

私を悩ませていたエンコード問題(漢字化けの原因)が解決しました! ! !

WBOY
WBOYオリジナル
2016-06-23 14:12:22800ブラウズ

私のウェブサイトのページはすべて gb2312 でエンコードされています (変更できません)。mysql データベースは変更できます。
mysql データベースのデータを utf8_general_ci から gb2312_chinese_ci に変更すると、問題は根本的に解決しますか?
utf8_general_ci と gb2312_chinese_ci の本質的な違い (ストレージ容量、読み取り速度など) は何ですか?


ディスカッションへの返信(解決策)

Chuanzhi Podcast の PHP ビデオを見た後、Han 先生が utf8 の漢字は 3 バイトであるが、gb2312 では 1 つの漢字が 2 バイトであると言っているのを聞いたような気がします。

mysql に接続するときのエンコーディングも設定する必要があります

つまり、データベースは utf8_general_ci ということですか?
変更は必要ありません。
データベースに接続するたびに set names gbk を実行するだけです

utf8_general_ci と gb2312_chinese_ci の間に本質的な違いはありませんが、前者と後者が占めるストレージの比率は 3:2 です


あなたが言及したページはそうではありません変更が許可されている場合、パッケージには PHP コードが含まれていません: mysql_query("set names utf8"); を PHP に追加すると、面倒になります。

つまり、データベースは utf8_general_ci ということですか?
変更は必要ありません。
データベースに接続するたびに set names gbk を実行するだけです

utf8_general_ci と gb2312_chinese_ci の間に本質的な違いはありませんが、前者と後者が占めるストレージの比率は 3:2 です
set names gbk は gb2312 で通常どおり読み書きできます、うん?
jquery ajax を再度使用すると文字化けする場合はどうすればよいですか?

はい、ページに必要なエンコーディングに名前を設定できます (utf-8 だけを utf8 として記述する必要があります)
データが ajax に送信されるときは、送信する前に実行してください
header('Content-type: text/html; charset=GBK');
以上です

データベースの設定を変更した後は、元のデータを書き換える必要がありますね。


0800-ffff utf-8 の範囲のコード ポイントを持つ Unicode 文字は 3 バイトであり、一般的に使用される中国語、日本語、韓国語、モンゴル語、チベット語の文字はすべてこの範囲内にあります

少数の珍しい中国語文字が含まれています。 010000 以外の韓国語文字は、対応する UTF-8 のバイト数が多くなりますが、これらの文字は一般に Windows フォントでは表示できない古代文字であるため、無視してかまいません

GBK でエンコードされた中国語の文字と記号。は全角です

この Web サイトは中国語 (簡体字) のみを対象としています。データベースを参照するだけの場合、utf8_general_ci と gb2312_chinese_ci のどちらを使用する方が良いですか? _ K k

GB2312_CHINESE_CI の代わりに GBK_CHINESE_CI

前者には 20,000 文字以上の中国語があり、後者には 6,000 文字以上しかありません。 Web 一般に、Web ページは単なるテキストであるため、gbk と gb2312 には基本的に違いはありません。 , 範囲外の文字であっても表示できるかどうかはフォントのみに依存します。Windows の漢字フォントは基本的に gbk の範囲内にあるため、Web ページが gb2312 であっても範囲を超えた文字は保持されます。も表示できます


ただし、トランスコーディングや関連操作の場合は、iconv やデータベースなど、正しく使用する必要があります。(#9 が言ったように) gb2312 ではなく、適用可能でより広い範囲を持つ GBK を選択する必要があります。トピック:
gbk と utf8 の中国語の文字数は異なり、後者の方が多くなりますが、前に述べたように、Windows の漢字フォントは基本的に gbk の範囲にあるため、utf-8 の余分な中国語の文字は含まれない可能性があります。
例:

ははは、CSDN が措置を講じて、私の例に適さない文字の後ろにあるテキストをすべて削除したようです

私の例は、Unicode 2b768 の漢字です。この文字は unicode[バージョン 6] cjk extend D に属します。これは utf-8 の範囲内ではありません。通常、Windows フォントはより大きなフォントをインストールする必要があります。基本的にそれらは商用フォントであり、有料です)

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。