2017-01-30 76 views
1

ajaxed無限スクロールを使用するときにギリシャ語のテキストをデコードするのに問題があります。英語以外のデータを扱うのは初めてですが、ギリシャ語のキャラクターをエスケープする必要があると理解している限り、そうでなければAjaxは文字を送信しようとしているため、jQuery/Ajax - 非ラテン・データのデコード。ギリシャ文字をエスケープする方法

私はこの(PHP)でエスケープすることにより、それがアヤックスに優しいます

function utf8ize($d) { // Encoding workaround 

    if(is_array($d)) { 

     foreach ($d as $k => $v) { 

      $d[$k] = utf8ize($v); 
     } 

    } elseif (is_string ($d)) { 

     return utf8_encode($d); 
    } 

    return $d; 
} 

ので、この

Το γράμμα άλφα (ἄλφα) είναι το πρώτο γράμμα του ελληνικού αλφαβήτου.

はこのようになります。

どのようにテキストである

Το γÏάμμα άλφα (ἄλφα) είναι το Ï€Ïώτο γÏάμμα του ÎµÎ»Î»Î·Î½Î¹ÎºÎ¿Ï Î±Î»Ï†Î±Î²Î®Ï„Î¿Ï….

私の英国 - ロケールデータベースでは生のように見えます。しかし、今ではフロントエンドでギリシャ語に戻す方法がわかりません。

通常、私は成功したフロントエンド上の非基本ラテンカフェ、婚約者、ファサードのような言葉のバックエンドにPHPのはutf8_encodeを使用して、jQueryのは、decodeURIComponentをデコードするだろうが、ギリシャでこのエラーがアップ

URIError: URI malformed

されていますutf-8をフロントエンドでギリシャ語をサポートする別のフォーマットに変換する組み込みのjQuery関数がありますか?

これは、デフォルトの負荷にどのように見えるかです:

enter image description here

そして、これは私がアヤックス

enter image description here

+0

これはPHPの問題で、jQueryの問題ではありません。jQuery( "ブラウザ"を読む)は、ギリシャ文字列をうまく扱うことができます。正しく送信しているわけではありません。あなたがクライアント上で行う必要がある(またはできる)ことは絶対にありません。サーバー側を修正する必要があります。これは、単純で単純なことを意味します。データをUTF-8として送信し、UTF-8として(Content-Typeヘッダー経由で)*アナウンスします。これが修正されると、クライアントが動作し始めます。 – Tomalak

+0

これは間違いなくあなたが開始する必要があります:http://stackoverflow.com/questions/279170/utf-8-all-the-way-through – Tomalak

+0

私のための作品:https://jsfiddle.net/nhyeLu5v/ – Hackerman

答えて

1

経由で同じテキストを挿入しようとしたとき、私は考え出した何が起こりますか@Hackermanと@HarryPehkonenのコメントに問題があります。

元の問題は、ギリシャ語のテキストにも混在文字を含むハイパーリンクがあることでした。

たとえば、ギリシャ語のリンクはラテン語ベースのドメイン名を持ちますが、ギリシャ語はsemantic slugsです。 URLバーにギリシャに見えますが、すでに実際にエンコードされたURLであり、テキストエディタにコピー&ペーストすると、このようになり

enter image description here

https://el.wikipedia.org/wiki/%CE%95%CE%BB%CE%BB%CE%B7%CE%BD%CE%B9%CE%BA%CF%8C_%CE%B1%CE%BB%CF%86%CE%AC%CE%B2%CE%B7%CF%84%CE%BF 

そして、それは物事を壊すように見える最後の部分です。その後はutf8_encodeとしようとすると、サンプル入力

Το γράμμα <b >άλφα</b> (<i >ἄλφα</i>) είναι το πρώτο γράμμα του <a href="https://el.wikipedia.org/wiki/%CE%95%CE%BB%CE%BB%CE%B7%CE%BD%CE%B9%CE%BA%CF%8C_%CE%B1%CE%BB%CF%86%CE%AC%CE%B2%CE%B7%CF%84%CE%BF" title="Ελληνικό αλφάβητο" >ελληνικού αλφαβήτου</a>. 

でそう

が既にURLエンコードされたセクションがされた文字列の結果を含む文字列をjson_encodeどちらもフロントエンドに戻ってデコードするとき。

私のutf8ize()関数を修正して、追加のiconv( 'UTF-8'、 'UTF-8'、$ d)を修正することで問題は解決しました。

+0

多くの人が、[documentation](http://php.net/manual/en/)で実際に調べることなく、utf8_encode()の機能とその名前を調べています。 function.utf8-encode.php)。 –

関連する問題