2016-07-30 7 views
1

PHPとcURLを使用してリモートAPIにアクセスしています。 JSONの結果を返します。 APIはユーザーが投稿したコンテンツを返すので、私はここでいくつかの奇妙な文字が予想されます。しかし、 - や 'のような非常にシンプルな文字は、PHPを介して中国語の文字としてエコーされています(これらは真のダッシュやアポストロフィではなく、むしろ同等のものです)。それにもかかわらず、他のウェブサイトはそれらをうまく表示することができます。なぜ私の場合、それらが中国語の文字としてエコーされているのか分かりません。PHPで特殊文字を解析するには?

たとえば、次のようになります。「エコーアウト」。

私は彼らがエンコードまたは含め、正しく表示するために得るために、私の処分で様々なPHPの方法を試してみた:

htmlentities() 
utf8_encode() 
htmlspecialchars() 

と全く違いを生みます。

また、私がチェックしましたし、私のページは<head>要素内で

<meta charset="utf-8"> 

を持っています。

明白な解決策がありませんか?私はそうしなければならないと感じる。

+0

DB文字セットを確認してください。 – Martin

+0

あなたがカールしたページの文字セットは何ですか? –

+0

L.フィアール、正直言って、チェックする方法がわからない。 要素のあるWebページではなく、application/javascriptというコンテンツタイプのAPIリターンです。 – Peregrine

答えて

0

はユニコードの特別なチャーターではありません。特別なチャーターはまだasciiで8ビット必要です。

ユニコードは16ビットを使用します。

は、あなたがあなたの文字エンコーディングのアイデアを与える必要があり

<meta charset="utf-8"> 
+0

@ソ連、DidとHaveの違いは何ですか? – enRaiser

0

APIのHTTPのContent-Typeを削除しようとしています。あなたが受け取っているエンコーディングを確認するには、あなたのカール要求によって返されたヘッダーを表示する必要があります。例えば

curl -v http://... 

curl -v google.comショー:コマンドラインからカールを実行すると、あなたが表示されます

Content-Type: text/html; charset=UTF-8

が次にあなたがあなたのデータベースにその文字エンコーディングを尊重していることを確認する必要があり、あなたのHTMLメタタグに

-1

私はちょうどばかだった。私は、誤った文字セットを追加しているMYページに矛盾するメタタグがあることに気づきませんでした。試して助けてくれるすべての人に感謝します。

+0

それで解決策は何だったのですか?あなたの問題を解決するために enRaiser

+0

私たちのおかげでもう1つの答えを追加することはできません。あなたはあなたの答えが私たちと違うことを証明する必要があります。または前の回答の1つを受け入れるボタンをクリックしてください – enRaiser

+0

あなたの答えを詳述するか、答えを削除してください。 – enRaiser