如何在C#后端将€转换为欧元符号€?
解决�转€符号的问题
问题根源
€并不是标准HTML/Unicode实体,它是Windows-1252编码中€符号对应的字节值(0x80)。ASPX页面能正常显示,是因为页面编码大概率设置为Windows-1252,浏览器会自动按该编码解析这个字节;而HttpUtility.HtmlDecode是遵循标准Unicode规则处理的,标准里€对应一个不可见的控制字符,所以无法解析成€。
解决方法
方法1:修改映射字典(推荐)
直接把字典中EUR对应的"€"替换为标准HTML实体"€",这是€符号的官方Unicode实体编码,前端后端都能正常解析:
"EUR", "€" "GBP", "£"
方法2:C#后端手动解码(无法修改字典时用)
如果不能改动原有字典,可在C#中把€按Windows-1252编码解码:
// 假设从字典中取出的EUR编码是encodedStr string encodedStr = "€"; // 提取十六进制数值部分 string hex = encodedStr.TrimStart('&','#','x').TrimEnd(';'); // 转成字节后用Windows-1252解码 byte[] byteArr = new byte[] { Convert.ToByte(hex, 16) }; string euroSymbol = Encoding.GetEncoding(1252).GetString(byteArr);
方法3:自定义实体映射
可以在解码前添加自定义替换规则,直接把€替换为€:
string decodedStr = HttpUtility.HtmlDecode(originalStr).Replace("€", "€");
内容的提问来源于stack exchange,提问作者Mr.B
相关产品推荐
相关产品推荐

