2015-04-03 65 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">