0

PHP ベースの MIME パーサーに取り組んでいます。ボディに文字列が含まれている場合は、Iñtërnâtiônàlizætiønに変換されていることがわかりますIñtërnâtiônàlizætiøn。誰かがそのような文字列の処理方法 (どの機能) を提案できますか?

そのため、次のことを行っています

  1. Zend Library を使用して IMAP サーバーに接続する

    mail = new Zend_Mail_Storage_Imap($params);
    
  2. を使用してメッセージを読む

    $message = $mail->getMessage($i);
    

    ループの中。

  3. を印刷する$messageと、たとえばIñtërnâtiônàlizætiønとして印刷された文字列が表示されIñtërnâtiônà lizætiønます。

私が必要としているのは、元の文字列を保持できる方法があるかどうかです。これは、他のマルチバイト文字に遭遇する可能性がある 1 つの例にすぎません。

4

2 に答える 2

0

そのための特定の機能はありません。文字列をそのエンコーディングで処理するだけです。文字列は単なるバイトの塊であり、それらのバイトをテキストとして解釈するものによって文字に変換されます。そして、何かがそのために正しいエンコーディングを使用する必要があります。そうしないと、それらのバイトは本来あるべき文字として解釈されません。一般的な落とし穴の概要については、「Web アプリケーションでの Unicode の前面から背面への処理」を参照してください。

于 2012-07-02T08:30:49.790 に答える
0

コメントで述べたように、php mb_* 関数を使用してマルチバイト文字を操作できます。文字列のエンコーディングを検出する例を次に示します。

$s="Iñtërnâtiônàlizætiøn";
echo mb_detect_encoding($s);  //UTF-8

次に、これを使用して、utf8_decode($s) または任意の mb_ 関数を使用して、文字列を希望のエンコーディングに変換できます。

于 2012-07-02T09:11:38.193 に答える