多言語のフォーム作成について


タイトルのフォームを作成しています
方法としては処理部分は全言語共通で言語毎にテンプレートを切り替える方式です
言語は日本語、ドイツ語なのですが、
ドイツ語のフォームに日本語を入力後POSTするとPHPのエラーが出力されます
(未定義の関数を呼び出そうとしています...というようなエラーですが関数は存在します)

現在のPHPの設定は下記の通りです

mbstring.detect_order auto
mbstring.encoding_translation On
mbstring.func_overload 0
mbstring.http_input UTF-8
mbstring.http_output UTF-8
mbstring.internal_encoding UTF-8
mbstring.language neutral

上記設定のmbstring.internal_endcodingをEUC等に変更すると
ドイツ語のフォームで日本語をPOSTしてもエラー等は起きなく
なりますが、肝心のドイツ語が部分的に文字化けを起こしてしまいます

これを解決する方法に心当たりのある方おられましたら
助言いただければと思います

よろしくお願いします

回答の条件
  • 1人2回まで
  • 登録:2008/10/28 13:48:40
  • 終了:2008/10/28 15:35:13

回答(2件)

id:goodvn No.1

goodvn回答回数228ベストアンサー獲得回数182008/10/28 14:18:25

ポイント35pt

mbstring のサポートされるエンコーディングをご覧ください.

http://jp.php.net/manual/ja/mbstring.encodings.php

ドイツ語に使われる,ISO 8859-1~10 は対応しているようです.

UTF-8 での入出力を期待されているようですが,フォームの HTML は,きちんと UTF-8 で出力されているでしょうか.ここが,EUC-JP などに変換されていると,ブラウザは,EUC-JP でデータを送ってくることになり,エンコーディングの変換でエラーが出る可能性があります.(上記設定を見る限りは,問題はなさそうですが)


もし,UTF-8 で入力して,そのまま取り扱うのであれば,encoding_translation を off にしても問題ないはずなので,それを試してみてください.

id:jayz

ありがとうございます

encoding_translation を offにしてみましたが変化はありませんでした

出力されいていたエラーはDBに関するものだったのですが

SQLの発行時にSQLがUTF-8だったことが問題だったようです

(DBの文字コードはEUC-JPです)

2008/10/28 15:33:35
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/10/28 14:26:11

ポイント35pt

php.iniの設定を以下のようにしてみてください。

mbstring.encoding_translation off
mbstring.http_input pass
mbstring.http_output UTF-8
mbstring.internal_encoding UTF-8

言語毎にテンプレートを切り替える方式

ここでテンプレートと言っているのは、HTMLコンテンツを指しますか?

であれば、ドイツ語も日本語も

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

になっていますか?


また、form タグの属性として enctype="multipart/form-data" を指定していますか?


参考サイト

id:jayz

ありがとうございます

上記のように自己解決してしまいました

今回の質問はエラー文まで載せるべきでした

2008/10/28 15:35:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません