2009-03-16 18 views
5

私はCURLを使用していくつかのコードをインポートしています。しかし、フランス語では、すべての文字が面白い。例:Bonjour ...CURLインポート文字エンコードの問題

インポートされたコードで何かを変更するアクセス権がありません。私はこの問題を解決するために何かできるのですか?ジョンスキートはそれがあなたの状況を理解するのは難しい指摘のように

おかげ

+0

「あなたの状況は不明であるPHPが来るんが、PHPのコードをダウンロードしているコンテンツとは何ですか?あなたは後でそのテキストを見るために使っていますか? " -Jon Skeetの答えは –

+0

以下です。あなたの状況は不明です。 PHPはどこに入っていますか? PHPコードをダウンロードしているコンテンツですか?後でテキストを見るために何を使用していますか?ダウンロードされたデータを適切なエンコーディングで処理するのはほぼ確実です。しかし、エンコーディングが何であるかを知る必要があります(正しく設定されていない可能性がありますが、可能なヒントについてはHTTPヘッダーを見てください)、正しいエンコーディングを*使用する方法を知る必要があります。データを取得した後にデータを使って何をしているかを知るまでは、後者の点ではお手伝いできません。 –

答えて

14

は、あなただけの最後のテキストへのアクセス権を持っているがあれば、あなたはテキストエンコーディングを変更するためののiconvを使用しようとすることができます。

I.e.

$text = iconv("Windows-1252","UTF-8",$text); 

私は(イタリア語と特殊文字で)前に同様の問題の時間を持っていたし、私はこの方法でそれを解決してきました。

異なる組み合わせ(UTF-8、ISO-8859-1、Windows-1252)を試してください。

+0

PHPのiconvのドキュメント:http://php.net/manual/en/book.iconv.php –

3

PHPはデフォルトでUTF-8を使用しているようですので、私は、次の作品を見つけ

$テキスト= iconvの( "UTF-8"、 "Windowsの-1252"、$テキスト);

2

私は現在、同様の問題を抱えています。私は単純なhtml <title> cia cURLを書こうとしています。だから、私は今まで何をやったかのアイデアを与えるつもりだ:

  1. そこレスポンスヘッダ上のエンコーディングのいずれかのヒントがcurl_getinfo()経由だと正規表現を経由して、それが一致した場合にHTML
  2. cURLの
  3. 経由でチェックを取得します
  4. 解析コンテンツタイプメタおよび<title>タグを見ての目的のためのHTML(はい、i know the consequences
  5. は、コンテンツ・タイプ、ヘッダおよびメタ両方を比較し、それが違う場合のメタいずれかを選択し、理由私たちはhttpdの設定について誰も気にせずに汚れの回避策の多くはそれを
  6. iconv()文字列を使用している
  7. シューッという音毎日の誰かが$DEITYが彼を罰する基準に従わないとき/彼女は日の終わりまで、それは私のメタ解析を救うためという
3

あなたは

$data = utf8_decode(curl_exec($ch)); 
0であなたの

$data = curl_exec($ch); 

を置き換えることができます

私はこの同じ問題を抱えていました。

+0

重要:ユーロ記号を含むUTF8データを変換するときは、utf_decode関数を使用しないでください。 utf_decodeは、データをISO-8859-1文字セットに変換します。しかし、ISO-8859-1文字セットにEURO記号が含まれていないため、EURO記号は疑問符文字 '?'に変換されます。 ユーロ記号でUTF8データを正しく変換するには、 iconv( "UTF-8"、 "CP1252"、$ data) – Thoman

6

私にも同様の問題がありました。私は入力と出力の文字セットのすべての組み合わせをループしようとしました。何も助けなかった! :(しかし、私は、実際にデータをフェッチコードにアクセスすることができたと犯人は嘘をついた場所です。データカールを介してフェッチされた。

curl_setopt($ch,CURLOPT_BINARYTRANSFER,true); 

追加

はそれを修正しました。

文字セットのリストのすべての可能な組み合わせを試してみるために、コードの便利なセット:?

$charsets = array( 
     "UTF-8", 
     "ASCII", 
     "Windows-1252", 
     "ISO-8859-15", 
     "ISO-8859-1", 
     "ISO-8859-6", 
     "CP1256" 
     ); 

foreach ($charsets as $ch1) { 
    foreach ($charsets as $ch2){ 
     echo "<h1>Combination $ch1 to $ch2 produces: </h1>".iconv($ch1, $ch2, $text_2_convert); 
    } 
} 
関連する問題