C# 在使用C保存到数据库之前对字符串进行编码和解码#

C# 在使用C保存到数据库之前对字符串进行编码和解码#,c#,localization,decode,encode,C#,Localization,Decode,Encode,我正在接受来自用户的一些关键字。这些关键字我想保存在我的数据库中 这些关键字可以是多种语言(英语、法语、汉语等) 一旦以某种编码格式保存在db中,我还需要在解码后将其读回 我已经试过了,但不起作用,因为我后来将这些值作为属性放在xml文件中 public static string EncodeKeyword(string keyword) { return Encoding.ASCII.GetString(Encoding.Unicode.GetBytes(keyword)); }

我正在接受来自用户的一些关键字。这些关键字我想保存在我的数据库中

这些关键字可以是多种语言(英语、法语、汉语等)

一旦以某种编码格式保存在db中,我还需要在解码后将其读回

我已经试过了,但不起作用,因为我后来将这些值作为属性放在xml文件中

public static string EncodeKeyword(string keyword)
{
    return Encoding.ASCII.GetString(Encoding.Unicode.GetBytes(keyword));
}

public static string DecodeKeyword(string encodedKeyword)
{
    return Encoding.Unicode.GetString(Encoding.ASCII.GetBytes(encodedKeyword));
}
使用此转换后,将生成我的xml

<header>
    <row keyword_term="'Y?e,g"></row>
    <row keyword_term="'Y?e,g^W"></row>
    <row keyword_term="'Y?e"></row>
</header>

而这失败了

请给我一些建议


编辑:我无法更改数据库列类型:(

为什么要编码?将数据库存储为NVarchar(Unicode)如果您的数据库是SQL@Alex的最佳选择。请尝试保留unicode以支持多语言。@AlexK。我无法更改数据库类型,您建议的任何其他方式。谢谢您不能更改,因为它失败了,或者是因为其他人的要求?如果您需要支持unicode(中文)等等,如果您的db列不是Unicode,您不能将其更改为nvarchar,您需要将Unicode字符转换为ascii字符,如Base64。但是,这样您就失去了在数据库中的列中轻松搜索的能力。