2011-01-19 14 views
2

RSSフィードをTumblrからKynetxアプリにインポートしています。アポストロフィはこのように表示されるRSSフィードは、いくつかのエンコードの問題を持っていることが表示されます:KRL RSSパーサ:エンコードの問題を処理しますか?

Apostrophes encoded incorrectly

(あなたがhereを見つけることができます)フィードをUTF-8でエンコードされていると主張します。

エンコードを指定する方法はありますか?そうでない場合は、文字を通常のアポストロフィで置き換えますか?

+0

これは良いUTF-8です。 (これは[一重引用符](http://www.fileformat.info/info/unicode/char/2019/index.htm)であり、標準のアポストロフィではありません。)クライアントはフィードを解析しているかのようにUTF-8と同じではなく、デフォルトの文字セットです。 – dkarp

+0

あなたは、このフィードをWindows-1252として解析するのではなく、UTF-8としてどのように解析するのですか?そして私はその答えが何であるか分かりません。 – dkarp

答えて

2

最適ではないが、あなたはこれらのエンコーディングをキャッチしようとUTF-8標準に置き換えることもできます。これは、UTF-を指定するサービスの場合のように見える

newstring = oldstring.replace(re/’/\'/); 

Windows special chars

8、それを明示的に強制しません。あなたが提供したRSSフィードの画像をアップロードしました。比較のために、テキストを切り抜いてメモ帳文書に貼り付け、キーボードから同じテキストを入力しました。

イメージからわかるかどうかわかりませんが、マングリングされたアポストロフィは、私のUTF-8ブラウザで生成されたアポストロフィとは異なります。

この投稿はWindowsクライアントから送信されたものと思われます。エンコードオプションを見ると、Western(Windows-1252)のオプションが表示されます。

Windows-1252は、ISO 8859-1に似ていますが、ANSI規格の制御文字の代わりに独自の文字の一部を置き換え、他のコードページの場所を変更します。

私は上記の引用ウィキペディアのページからの引用のカップル:

文字セットのラベルISO-8859-1でWindows-1252のテキストデータをmislabelすることは非常に一般的です。多くのWebブラウザや電子メールクライアントは、このような誤ったラベルに対応するために、MIME-charset ISO-8859-1をWindows-1252文字として扱います。

Wordなどの多くのMicrosoftプログラムは、標準ASCII文字「スマート引用符」(例えば、「短縮形のアポストロフィーを代用する)」や「(c)」の3文字を©に置き換えるなどのように入力します。

KRLは、UTF-8でサポートされているすべての言語文字セットをサポートしているため、ネイティブで複数バイトの国際文字をサポートします。ただし、これは、ISO-8859-1またはWindows-1252のみを選択する場合に可能な符号化をファジーにすることを犠牲にして行われます。

+0

リモートサーバが3バイトの「’」を返すという事実は、元の投稿にアポストロフィの代わりに魔法のWindowsの右引用文が含まれていたことを意味します...しかし、それは正しく拾われました。これらの3バイトは、[右一重引用符(http://www.fileformat.info/info/unicode/char/2019/index.htm)文字:0xE2 0x80 0x99'の正しいUTF-8です。しかし、ストリームをUTF-8(これは!)として解析するのではなく、KRLがそれをWindows-1252として解析しているため、これらの3文字が表示されます。それが問題です。 – dkarp

+0

'oldstring.replace(re /â€/ /" '");'この構文を使ってコンパイルする必要がありました。しかしそれでも、それはうまくいかないようです。 3文字は置き換えられません。 –