2015-04-03 128 views
0

我正在一個項目中,我將表單數據提交爲xml並將其以xml形式存儲到我的數據庫。在C#中解碼字符串時獲取未知字符

在c#中解碼xml數據時,我收到未知字符。其實我正在保存西班牙文,例如「Introduzca textoaquí」。

所以在xml中,我得到這個'í'字符作爲%ED,並使用HttpUtility.UrlDecode(formData)對它進行解碼。我得到了 而不是í。

XML數據之前解碼

<ArrayOfDiary><Diary><Date>03042015</Date><Situation>Introduzca texto aqu�</Situation><Sensation>Introduzca texto aqu�</Sensation><Concern>Introduzca texto aqu�</Concern><BeliefRating>0</BeliefRating><AnxietyRating>0</AnxietyRating></Diary> 
<Diary> 
<Date>03042015</Date> 
<Situation> Introduzca texto aqu�</Situation> 
<Sensation> Introduzca texto aqu�</Sensation> 
<Concern> Introduzca texto aqu�</Concern> 
<BeliefRating>0</BeliefRating> 
<AnxietyRating>0</AnxietyRating> 
</Diary> 
</ArrayOfDiary> 

請幫助我解碼後

%3CArrayOfDiary%3E%3CDiary%3E%3CDate%3E03042015%3C/Date%3E%3CSituation%3EIntroduzca%20texto%20aqu%ED%3C/Situation%3E%3CSensation%3EIntroduzca%20texto%20aqu%ED%3C/Sensation%3E%3CConcern%3EIntroduzca%20texto%20aqu%ED%3C/Concern%3E%3CBeliefRating%3E0%3C/BeliefRating%3E%3CAnxietyRating%3E0%3C/AnxietyRating%3E%3C/Diary%3E%0A%20%20%3CArrayOfDiary%3E 

數據。由於

+0

你應該在你的c#代碼中的西班牙語字符之前放置'N',例如'N'espassword''' – 2015-04-03 12:35:56

+0

你的意思是說我的文本應該是「Introduzca textoaquNí」,但它將如何幫助解碼,什麼是放置N的目的,請解釋 – rupinder18 2015-04-03 12:41:25

+0

我的意思是這個'N'Introduzca textoaquí'' 檢查此鏈接 http://support.microsoft.com/en-us/kb/239530 – 2015-04-03 12:57:33

回答

1

沒有看到其中的數據是從哪裏來的,我認爲它已經與創建ISO-8859-1的編碼。

您可以通過在UrlDecode使用適當的編碼得到解決該問題:

Option Infer On 
' .... 
Dim s = "%3CArrayOfDiary%3E%3CDiary%3E%3CDate%3E03042015%3C/Date%3E%3CSituation%3EIntroduzca%20texto%20aqu%ED%3C/Situation%3E%3CSensation%3EIntroduzca%20texto%20aqu%ED%3C/Sensation%3E%3CConcern%3EIntroduzca%20texto%20aqu%ED%3C/Concern%3E%3CBeliefRating%3E0%3C/BeliefRating%3E%3CAnxietyRating%3E0%3C/AnxietyRating%3E%3C/Diary%3E%0A%20%20%3CArrayOfDiary%3E" 
Dim enc = Encoding.GetEncoding("ISO-8859-1") 
Dim txt = Web.HttpUtility.UrlDecode(s, enc) 

爲了避免這種麻煩,你可以在網頁的<head>部分使用<meta charset="utf-8" />。如果您想表明該頁面是西班牙語,您仍然可以使用<html lang="es">