2

タイトルが良くなくて申し訳ありませんが、この問題を分類する方法さえわかりません。これがエンコーディングに関係していることは知っていますが、その方法はわかりません。

私はESPのプロジェクトを行っています。彼らの電子メールは、utf-8 文字セットを使用して 7 ビットでエンコードされています (これは私にはあまり意味がありません)。

展示物A:

エンコーディング設定

API 経由で HTML メール テキストを取得します。次に、PHP を使用して (str_replace を介して) テキストの一部を変更し、API を介して新しい html を投稿します。

すべて問題ありませんが、投稿するたびに奇妙な文字が表示されます。つまり、コードを実行するたびに別のファンキーな文字が追加されます。

変更を加える前の電子メールの影響を受けるセクションを次に示します (これは「表示」モード、つまりブラウザでどのように表示されるかです)。

始める

その著作権記号と、その上に「acute」記号が付いた A を生成するコードは次のとおりです。

                            © 2012 H

奇妙なのは、その上に「深刻な」記号が付いた A を取り除く唯一の方法は、著作権記号を削除することであるということです...どういうわけか、それらは関連しています。

PHP 経由で API に投稿するたびに、新しいファンキーな文字がいくつか取得されます。

最初の投稿:

ここに画像の説明を入力

2 番目の投稿:

ここに画像の説明を入力

3 番目の投稿:

ここに画像の説明を入力

それはとても奇妙です...これは機能していない唯一の部分です! 助けてください...これは私を狂わせています!:-)

編集:

関連するPHPは次のとおりです。

  1. xml 応答から html を取得します。

    $html = (文字列)$データ;

  2. いくつかのものを置き換えます:

    $newHTML = str_replace($oldExpiresString, $newExpiresString, $html);

  3. 新しい HTML を xml 投稿変数に入れます。

    $input = ''.$newHTML.'';

  4. URLエンコード:

    $formatted = urlencode($input);

  5. curl 経由で投稿:

    $postVariables = array( 'type' => urlencode($type), 'activity' => urlencode($activity), 'input' => urlencode($input) );

    $rawResponseString = post_url($urlBase, $postVariables); $rawResponseString を印刷します。

4

1 に答える 1

2

私のコメントを詳しく説明するには:

$screwed = '©';

echo html_entity_decode($screwed, ENT_COMPAT, 'ISO-8859-1');

これは「©」を返し、台無しにされたマルチシングルバイト HTML エンコーディングをUTF-8 でエンコードされたテキストにデコードします。したがって、ここからは、テキストを UTF-8 でエンコードされているかのように処理する必要があります (現在はそうです)。

于 2013-02-25T08:04:59.727 に答える