2012-10-31 4 views
5

になります。デコード� twitterのStream APIからデータを読み込んでxmlfileに書き込むと、実際の文字

しかし�のようないくつかの特殊文字は、(私はChromeでそのXMLFILEを開くと、Chromeはその文字に誤りがあったことを言った意味で!)

私はそのコードされた配列(�)を変換したいエラーが発生しますxmlfileに書き込む前に実際の文字(�)に変換してください!

これを実装する方法は?

------------- ADDED --------------

これはXMLFILEコンテンツである:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
<text>@carlyraejepsen would be a dream if you follow me, please follow me?, I love you so much you're my inspiration</text> 
<text>someone please bring me a caramel apple and a mocha from black cat. i'll love you forever</text> 
<text>“@G_MartinFlyKick: Marry me Juliet.I love you and that's all I really know.”&#55357;&#56834;&#55357;&#56834;&#55357;&#56834;&#55357;&#56834;&#55357;&#56834;</text> 
<text>"I need to see a picture of him cuz Im trying to imagine you guys making love and all I see is u climbing on top of a big question mark"lmao</text> 
<text>@District3music hi, I LOVE YOU follow me please? &amp;lt;3 xx 23</text> 
<text>RT @syardley_: So appreciative of my family and people I love, wouldn't be where I am without them. #thankful</text> 
<text>#DISTRICT3HALLOWEENFOLLOWSPREE #DISTRICT3HALLOWEENFOLLOWSPREE #3EEKERFROMTHENETHERLANDS love you! Please follow ? @District3music x42</text> 
<text>Arguably my favorite electronic music producer @Kluteuk is coming back to Toronto on Dec 22nd. So stoked. Guy has made so many tunes I LOVE.</text> 
<text>The stakes are high, the water's rough, but this love is ours.</text> 
<text>@NiallOfficial Answer me, I love you very much. Venezuela loves. jhgj</text> 
<text>Love this shit http://t.co/qSP79NKx</text> 
</root> 

そして、ここにクロームの誤差は次のとおりです。

This page contains the following errors: 

error on line 5 at column 91: xmlParseCharRef: invalid xmlChar value 55357 
Below is a rendering of the page up to the first error. 
+0

使用している言語/フレームワークは何ですか? 。ネット? C? 6502アセンブラ? –

+0

エラーとは何ですか? XMLを表示してください。 – SLaks

+0

私はJava @DourHighArchを使用しています – Songokute

答えて

12

文字参照&#55357;は、サロゲートコードポイント(U + D83D)を示し、文字に変換しようとすることは誤りです。それはキャラクターではなく、半分のキャラクターでもない。

参照が生成されたポイントまで戻って追跡する必要があります。理由は文字エンコーディングの混乱かもしれません。 UTF-16では、サロゲートコードユニットが表示されることがありますが、データが文字として解釈される場合はペアで処理する必要があります。別のエンコーディングに変換されるか、または文字参照に変換されます。

+0

私はこのリンクからデータを取得します:https://stream.twitter.com/1.1/statuses/filter.json?delimited=length&track=love、エンコーディングの混乱はどのように起こりますか – Songokute

+0

@Songokute、難解です。ページにユーザー名とパスワードが要求されるためです。 –

+2

XMLFileの内容で判断すると、データにU + 1F602 ""という文字が含まれているように見えます。これは、UTF-16で2つのコード単位を占めることを意味します。明らかに元のデータはUTF-16であり、まずUTF-8に変換する必要があります。 –

0

正規表現を使用して、サーバーの応答後に正規表現を置き換えることができます。 Pythonの簡単な例:

import re 
pattern = re.compile(r'&#') 
new_content = pattern.sub(' ', SERVER_RESPONSE) 
関連する問題