特殊字符存入数据库问题

jf987 2012-04-20 10:01:48
现在有特殊字符(像"²",在C#中是"\u00b2")需要保存到数据库,他被包含在一个XML的一个节点中。 现在想把它存进数据库然后再取出来,可以原样显示出来,请问如何解决?
现在遇到的问题是存到数据库里就会变成?,但是不能单纯的用replace方法,因为以后可能不只有一种特殊字符。

先谢谢了!
...全文
589 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rayyu1989 2012-04-20
  • 打赏
  • 举报
回复
存成byte 0.0
jf987 2012-04-20
  • 打赏
  • 举报
回复
试了一下:
string str = "² aaaaaaa";
byte[] Bytes = Encoding.Unicode.GetBytes(str);
string strBase64 = Convert.ToBase64String(Bytes);
byte[] byteDecode = Convert.FromBase64String(strBase64);
string strDecode = Encoding.Unicode.GetString(byteDecode);
Console.WriteLine("Base64:");
Console.WriteLine(strBase64+"\n");
Console.WriteLine("Decode:" + strDecode);

这样的话"aaaaaaa" 也被转化成Base64了,在数据库就失去了可读性,不是很理想啊,有没有我说那种用正则找出特殊字符然后加"\"的方法吗?
铜臂阿铁木 2012-04-20
  • 打赏
  • 举报
回复
byte[] outputb = Convert.FromBase64String([base64string]);
string orgStr= Encoding.Unicode.GetString(outputb);
jf987 2012-04-20
  • 打赏
  • 举报
回复
string str = "²";
byte[] Bytes = Encoding.Unicode.GetBytes(str);
Console.WriteLine((Convert.ToBase64String(Bytes)));

是这样吗?
之后如何decode呢?
cjh200102 2012-04-20
  • 打赏
  • 举报
回复
支持楼上
熙风 2012-04-20
  • 打赏
  • 举报
回复
支持Base64
jf987 2012-04-20
  • 打赏
  • 举报
回复
我的最理想的办法是把这个"\U00b2"识别出来(或者"\u00b3"之类),前面加上"\",这样就可以正常存入,有没有正则或者其他的办法?
铜臂阿铁木 2012-04-20
  • 打赏
  • 举报
回复
一般处理大范围的特殊字符都是将元数据Base64编码一下。因为标准Base64中除了/ 和= 没有别的特殊字符。当然 如果认为/和=也是你不需要的特殊字符,可以将这两个改成@和#。

最好压缩后进行Base64,因为base64会增大数据。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧