私はXMLDocumentを使用してXMLファイルを読み込もうとしています。しかし、私はエンコーディングにいくつかの問題があります。私はこのようなXML文書を読む:XML読み込みとエンコーディングの問題
Dim xmldoc As New XmlDataDocument()
Dim xmlnode As XmlNodeList
Dim i As Integer
Dim fs As New FileStream(tbFileLocation.Text, FileMode.Open, FileAccess.Read)
xmldoc.Load(fs)
xmlnode = xmldoc.GetElementsByTagName("Message")
For i = 0 To xmlnode.Count - 1
Dim SMSToAdd As New SMS()
For Each Child As XmlElement In xmlnode(i).ChildNodes
Dim Name As String = Child.Name.ToString()
If Name = "Body" Then
ContenuDuMessage = Child.InnerText
End If
Next
'Other things
Next
私のXML文書にはemojisが含まれているという問題があります。ファイルを読むときにノードをemojisで変数に入れ、別のファイルに書き込むと、すべてが期待通りに機能します。ただし、次のコードを使用すると、
Dim Temp As Char() = Content.ToCharArray()
Dim Returned As String = ""
For Each Character In Temp
Dim Result As Tuple(Of Boolean, Tuple(Of String, String)) = CharToSurrogates(Character.ToString())
If Result.Item1 Then
Returned &= "&#" & ConvertHexToDec(Result.Item2.Item1) & "; &#" & ConvertHexToDec(Result.Item2.Item2) & ";"
Else
Returned &= Character
End If
Next
Return Returned
コンテンツはemojisを含む可能性があります。ここでの目標は、絵文字をXMLエンティティに変換して、変換する絵文字が必要なAndroidアプリケーションでその絵文字を読むことができるようにすることです。 CharToSurrogatesメソッドは基本的に、文字が絵文字かどうかを記述したタプル(Of Boolean、Tuple(Of String、String))を返す文字に関連付けられたサロゲートを取得し、次にその2つのサロゲートを関連付けます。
私はこれをどのように修正することができます:私は私のコードを使用するたび
ものの、絵文字は、このようなことが仕事決してさせ、絵文字のように少し正方形のように表示されないのですか?
PS:CharToSurrogates方法がここで見つけることができる:http://pastebin.com/LiBB1q2p
IDEでemojisを表示できますか?その正方形は通常、フォントにその文字が含まれていない場合に表示されます。あなたはキャラクターの実際のユニコード値をチェックしましたか?また、文字を比較できるときに 'ToString()'を使って文字列を比較するのはなぜですか? –
全く関係ありませんが、私は最近のプロジェクトでXmlDocumentを頻繁に使用しましたが、後で誰かがXDocumentを使うべきだと提案しました(もっと多くのLINQのような機能があるようです)。私はウサギの穴をあまりにも遠くまで歩いていた。 emojisのように@Samiのように、ユニコードの値を取得し、おそらく保存して&印刷することがより良いかもしれない印刷 –
まあ私はそれがemojisを表示することができません...しかし、私は2つの異なる絵文字を使用してcharToSurrogates両方のメソッドで、同じ戻り値を2回取得します(False、( "FFFD"、 ""))。 ToStringのことは実際にテストすることでした。ユニコードの値はどういう意味ですか? –