2012-04-27 24 views
2

実際には2ページあり、1つはISO、もう1つはUTF8です。私は大きな混乱を起こすことなくそれらを変える可能性はない。PHPエンコーディングの問題(utf8からiso)

UTF8ページに、漢字でGETデータをISOページに送信するフォームがあります。
URLはsearch=文員、つまりUTF8のように見えます。

私はISOページでデータを受け取り、私はそれを可読な文字にすることができません。

解決策はありますか?

UTF8ページのデータをJavascriptで変換する必要がありますか?

+1

ISOは多くのことを意味することができます。特定のISO文字セットはどれですか?また、ISOのページをUTF-8に移行することをお勧めします。これは互換性のある方法でページ全体のデータ管理を達成し、標準化するためには大丈夫です。 – hakre

+0

私はこのプロジェクトを最初に取ったときにISOをUTF8に入れようとしましたが、データベースに挿入されたすべての情報を混乱させました。私たちがデータベースにutf8を置くことができるのかどうかは分かりませんでした.-(ISO-8859-1 – Shadowbob

+0

ISO-8859-1で漢字をデータベースに保存することは決してできません。 – hakre

答えて

2

あなたのformタグに以下を追加し、送信するページを変更することができた場合:

<form accept-charset="ISO-..."> 

は、2ページ目の正しいエンコーディングを挿入します。詳細については、フォームにaccept-target属性を与えることから離れてMDN

+0

申し訳ありませんがあなたの答えを+1できませんが、私はあなたが+1する権利を持っていると約束します:-)とてもありがとう – Shadowbob

1

を見て、別のオプションは、受信ページのデータを変換するために、次のようになります。

$data = $_POST['data']; // for example 
$data = iconv('UTF-8', 'ISO-ENCODING-HERE', $data); 

は用iconvのマニュアルを参照してください入力データをターゲットの文字セットで表現できない場合の関数の動作に影響を与えるオプション。

0

あなたが所望の目標エンコーディングにあなたの現在のエンコーディングからの文字列を変換するには、この機能を使用することができます。

function correct_encoding($text, $target_encoding='UTF-8') { 
    $current_encoding = mb_detect_encoding($text, 'auto'); 
    $text = iconv($current_encoding, $target_encoding, $text); 
    return $text; 
}