2013-04-18 36 views
1

我的WP7應用程序中有一個字符串。如何將字符串轉換爲WP7中的UTF-8字符串格式

我需要將此字符串以UTF-8格式發送到我的服務器。 如何將任何字符串轉換爲UTF-8格式?

到目前爲止,我已經試過這樣:

UTF8Encoding utf8 = new UTF8Encoding(); 

byte[] encodedBytes = utf8.GetBytes(jsonString); 

string jsonStringUTF8 = Convert.ToString(encodedBytes); 

其中jsonString是我需要UTF8格式的字符串。

但是當我嘗試做打印新jsonStringUTF8:

System.Diagnostics.Debug.WriteLine("JsonStringUTF8 is: {0}", jsonStringUTF8); 

什麼,我得到的是:

JsonStringUTF8是:System.Byte []

任何想法?

+0

根據您向服務器發送數據的方式,發送'jsonString'或'encodedBytes'。你不需要'jsonStringUTF8'。 – dtb

+0

我知道的是,服務器接受UTF8編碼的jsonstring ..它是否已經在編碼?如果您想查看,可以在這裏找到WORKS的等效iOS代碼:http://stackoverflow.com/questions/16088288/make-an-http-post-request-to-send-a-json-file -in-wp7,你可以在這裏看到,我通過ASIHttpRequest庫使用了一些編碼 – donparalias

+0

字符串沒有編碼。他們是字符串。如果你想發送一個字符串到服務器,它需要首先轉換爲字節。轉換爲字節需要使用編碼。這個對話可以由你自己完成('Encoding.UTF8.GetBytes'),也可以由你用來發送內容到服務器的庫來完成。你還沒有告訴我們你使用的是什麼庫。 (它是[WebClient](http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx)?) – dtb

回答

2

使用Convert.ToString不能將byte數組轉換爲字符串。你需要解碼它,因爲它是一個UTF8編碼的字節數組。

string jsonStringUTF8 = Encoding.UTF8.GetString(encodedBytes, 0,encodedBytes.Length) 
+0

我得到這個錯誤:'System.Text.Encoding.GetString(byte [])'由於其保護級別而無法訪問 – donparalias

+0

@donparalias - 我已經改變了重載版本(因爲它是Silverlight)的答案。 – keyboardP

+0

是的。先生非常感謝您。如果可能的話,你想評論一下dtb先生對上述評論的評論嗎?因爲我現在有點困惑。我想要做的是錯誤的,因爲他說或糾正? – donparalias

1

根據規範,CLR中的字符串是UTF-16編碼的Unicode字符。你實際上不能創建一個UTF-8 字符串,本身。一個UTF8編碼byte[]可以用代碼把它放回一個[UTF-16]字符串是這樣的:

byte[] rawUtf8EncodedData = ReadSomeUtf8EncodedBytes() ; 
string decodedString  = Encoding.UTF8.GetString(rawUtf8EncodedData) ; 

您也可以明確地創建一個UTF8 Decoder並用它來進行轉換,或(最後技術)可能是使用System.IO設施:

string value ; 

byte[] rawUtf8EncodedData = ReadSomeUtf8EncodedBytes() ; 
using (MemoryStream utf8Stream = new MemoryStream(rawUtf8EncodedData)) 
using (StreamReader reader = new StreamReader(utf8Stream , Encoding.UTF8)) 
{ 
    value = reader.ReadToEnd() ; 
} 

應當注意的是,應該將源數據進行一個BOM,它會出現在轉換後的字符串,雖然看不見,交通不便給你。通過XML讀取器在BOM上應用,應該不會有一個。

這裏是Jon Skeet關於字符串的文章,http://csharpindepth.com/Articles/General/Strings.aspx,以及他在Unicode和Encodings上的文章,文章編號爲http://csharpindepth.com/Articles/General/Unicode.aspx

相關問題