
PHPとMySQLで中国語のサイトを作っているのですが、データベースから読み出した文字列が、GB2312に変換後一部の文字だけ「?」になってしまいます。
このサイトでは中国語以外に、既に日英のサイトがあってそれらは、
日:WEB = SJIS / DB = EUC
英 : WEB = UTF-8 / DB = EUC
中 : WEB = GB2312 / DB = EUC
という構成になっています。
ちなみに管理者画面では、日、英、中、全てのコンテンツを編集できるようになっていて、文字コードは、shift-jisにしてあります。
ですので、中国語のコンテンツを書き出すときは、
管理者画面:shift-jis
↓
PHP処理:EUCに変換
↓
DB:EUCで登録
↓
DB:EUC
↓
PHP処理:GB2312に変換
↓
HTMLに書き出し
という流れになっています。
中国語のサイトを作られている方は少ないと思いますが、分かる範囲でアドバイスをいただければと思います。よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
中国語の文字コードを詳しく知らないのですが、中国語をEUCにするってのはそもそも間違えているのではないでしょうか。
多国語を扱う場合は素直にDBもソースもUTF-8などにしてしまった方が良いかと思います。
何が何DBはEUCで!!
って場合は、文字データをバイナリの状態で(BLOG型)に入れてやったりする必要があると思います。
出力形式を変えたり、それぞれの文字コードを把握しないといけないなどかなりめんどくさいと思います。
また、予想できない問題がいろいろあるんじゃないかな?と思います。
この回答への補足
そうなんです。最初にUTF-8にするべきでした。ただ、日英のシステムを組んでいたときはまだ知識が少なかったため、EUCを選んでしまいました。
テーブルごとに文字コードが変えられたらいいですけどね。すでにシステムは動いており、後にはひけない状況だといえます。
BLOG型ではななく、BLOB型でしょうか?
それを一度試してみたいと思います。
症状としては、shift-jisで特定の文字だけ文字化けしてしまう、といったのと似ており、GB2312で特定の文字だけ文字化けしてしまうという感じです。
結局、
SJIS
ではなく、
sjis-win
にすることで解決できました。
また、また今後のために文字データをBLOB型で保存することにしました。
現状では、
管理者画面(入力):sjis-win → DB:GB(EUC/BLOB型)
管理者画面(出力):DB:GB(EUC/BLOB型) → sjis-win
中国語サイト:DB:GB(EUC/BLOB型) → GB
という感じで処理することにしました。
BLOB型にするメリットがいまいち分かっていないまま、こうしてみたのですが、全然違うものなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Mac 乗数の入力方法
-
UTF8→ShiftJISに変換したいです!
-
c++でmatからvectorへの変換の...
-
StrConvの使い方について教えて...
-
C#でのpngからbmpへの変換について
-
C#で漢字→ローマ字を変換
-
Win32APIのFTPクライアントにつ...
-
テキストでかかれた数式をビッ...
-
PHPで、日本語からアルファベッ...
-
ラドン変換を用いた回転・拡大...
-
ASP.NET SJIS→UTF-8文字コード...
-
LATEXのスライドに画像を挿入
-
C/C++→JAVAに変換するツール
-
家電製品の電力周波数を変える機械
-
VB.NETをJavaに変換するツール...
-
VB.NETからJavaに変換するツー...
-
isoをimgに変換したいのですが...
-
画像ファイル変換(Tiff→PDF)
-
進法を変換する時に、相性のい...
-
COMP-3
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
家電製品の電力周波数を変える機械
-
Mac 乗数の入力方法
-
3のつく数字と3の倍数のみを表...
-
エクセルVBAの自動変換機能?
-
VB.NETをJavaに変換するツール...
-
c++でmatからvectorへの変換の...
-
分を時間に変換するプログラム
-
緯度、経度の 10進法と 60進法...
-
逆コンパイルと逆アセンブルの...
-
なぜ通信には16進数文字列が使...
-
VB6からVB2010への変換について
-
10進数をBCDに変換する方法
-
C++からCへのソース変換について
-
VB6で10進数を32進数に変換する...
-
php
-
画像ファイル変換(Tiff→PDF)
-
VB.NETからJavaに変換するツー...
-
PHPで、日本語からアルファベッ...
-
WinHelpからHTML Helpに変換
-
マンセル⇔XYZ,RGB変換式或いは...
おすすめ情報