请教一个关于编码的问题,有点头疼

Jxb_Sir 2014-01-18 09:56:59

string str1 = "%C3%A1";
string str2 = "a%CC%81";
//其实这2个字符串用UTF8解码后,都是“á”这个字符


现在有个头疼的问题,由于2个字符的编码不同,解码后虽然看上去是一样的,但是对比的结果是不相同的,有没有方式能够让他们是相同的?
...全文
183 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jxb_Sir 2014-01-22
  • 打赏
  • 举报
回复
引用 5 楼 gomoku 的回复:
他们显示起来可能是一样的,却不是同一个字符。 str2是一个‘组合字符(Combining Character)’,由一个基础字符,和一个‘非空格标记(non-spacing marks)’组成,因此它的字符数是2。 如果你要把他们当成一样,可以先替换后,再比较:
str2 = str2.Replace("á", "á"); 
// 如果看不出区别,可以用下一行
str2 = str2.Replace("a\u0301", "\u00e1");
字符不单只有这么一个,很多这类的,一一替换肯定不行
gomoku 2014-01-20
  • 打赏
  • 举报
回复
他们显示起来可能是一样的,却不是同一个字符。 str2是一个‘组合字符(Combining Character)’,由一个基础字符,和一个‘非空格标记(non-spacing marks)’组成,因此它的字符数是2。 如果你要把他们当成一样,可以先替换后,再比较:
str2 = str2.Replace("á", "á"); 
// 如果看不出区别,可以用下一行
str2 = str2.Replace("a\u0301", "\u00e1");
Jxb_Sir 2014-01-18
  • 打赏
  • 举报
回复
引用 2 楼 tangxu12 的回复:
用 Encoding Encoding ascii = Encoding.ASCII; Encoding unicode = Encoding.Unicode;
他们2个的长度都是不一样的,一个是1,一个是2,换种编码还是一样不行的吧?
tangxu12 2014-01-18
  • 打赏
  • 举报
回复
用 Encoding Encoding ascii = Encoding.ASCII; Encoding unicode = Encoding.Unicode;

110,538

社区成员

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

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

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