人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

mbstring.detect_order auto
mbstring.encoding_translationOn
mbstring.func_overload 0
mbstring.http_input UTF-8
mbstring.http_output UTF-8
mbstring.internal_encodingUTF-8
mbstring.language neutral

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

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

よろしくお願いします



●質問者: jayz
●カテゴリ:インターネット ウェブ制作
✍キーワード:EUC ON PHP UTF-8 エラー
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● goodvn
●35ポイント

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 にしても問題ないはずなので,それを試してみてください.

◎質問者からの返答

ありがとうございます

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

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

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

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


2 ● pahoo
●35ポイント

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" を指定していますか?


参考サイト

◎質問者からの返答

ありがとうございます

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ