2009-04-02 11 views
0

私は<textarea>の値をXMLHttpRequest経由でデータベースに追加するPHPページに渡そうとしています。Ajaxがノルウェー語をめちゃくちゃにする

ただし、データベースに到達すると、 "åæø"の文字は "ââ、¬"に変換されます。私はハイとローを検索し、UTF-8に変更しようとしました

は、htmlentities()/htmlspacialchars()などのJavaScriptのバージョンを使用しようとしましたが、私が何をしようと何に関係なく、結果は常に同じです。

マイページはiso-8859-15に設定されており、リクエストのrequestTypeも同じです。

私は自分の仕事でAjaxをあまり使わなくてもいいので、ネットから設定手順を抜きました。

var page_request = false; 
var contentType = "application/x-www-form-urlencoded;charset=iso-8859-15"; 

if (window.XMLHttpRequest) 
{ 
    page_request = new XMLHttpRequest(); 
} 

// If the Browser is Internet Explorer 
else if (window.ActiveXObject) 
{ 
    try 
    { 
    page_request = new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
    catch (e) 
    { 
    try 
    { 
     page_request = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    catch (e){} 
    } 
} 
else 
{ 
    return false; 
} 

page_request.open('POST', url, true); 
page_request.setRequestHeader("Content-Type", contentType); 
page_request.send(query); 

ただし、受信側とデータベースのPHPファイルでは、特殊文字が変換されます。

ご協力いただきありがとうございます。この1つのエラーを修正しようとしています...

+0

すべてのブラウザでこれを行いますか?また、DBはどの魅力的なセットに入っていますか? –

答えて

-2

まず、このWebサイトでは、コードを選択して小さな101 | 010記号をクリックした場合のみ、構文の強調表示をサポートしています。

第二に、私はISO-8859-1をお勧めしますが、私はあなたのtextareaコンテンツにencodeURIComponentを使用する必要があります...それは動作が保証されます

0

を言っていません。 UTF-8も使用してください。

1

あなたのcharset delcarationは嘘です。そのコンテンツがISOにあると言っても、魔法のようにISOになるというわけではありません。

query変数はUTF-8エンコードで表示されます。 Javascriptの文字列は常にUnicodeで、encodeURIComponent()(GETとPOSTリクエストを適切にフォーマットするために必要です)のような関数はUTF-8を使用するため、これが期待されます。

IMHO最高のことは、ISOエンコーディングの使用を完全に永遠に止めることです。

まだできない場合は、Javascriptでデータをシリアル化するか、サーバーに投稿データを受け取るときにUTF-8をISOに変換する必要があります。

関連する問題