我在 c# 中有一个字符串初始化如下:
string strVal = "£2000";
但是每当我写出这个字符串时,都会写出以下内容:
2000 英镑
它不会用美元来做这件事。
我用来写出值的代码示例:
System.IO.File.AppendAllText(HttpContext.Current.Server.MapPath("/logging.txt"), strVal);
我猜这与本地化有关,但如果 C# 字符串只是 unicode,那么这应该就可以了吗?
澄清: 更多信息,Jon Skeet 的回答是正确的,但是我在对字符串进行 URLEncode 时也遇到了问题。有什么办法可以避免这种情况吗?
所以 URL 编码的字符串看起来像这样:
“%c2%a32000”
%c2 = Â %a3 = £
如果我编码为 ASCII,那么 £ 会变成 ?
还有什么想法吗?
最佳答案
AppendAllText
正在用 UTF-8 写出文本。
你用什么看的?很可能它不理解 UTF-8,或者没有先尝试 UTF-8。告诉您的编辑器/查看器它是一个 UTF-8 文件并且一切正常。或者,使用 AppendAllText
的重载,它允许您指定编码并使用对您来说最方便的编码。
编辑:针对您编辑过的问题,当您使用 ASCII 编码时它失败的原因是 £ 不在 ASCII 字符集中(即 Unicode 0-127)。
从外观上看,URL 编码也使用 UTF-8。同样,如果您想使用不同的编码,请将其指定为 HttpUtility.UrlEncode
接受编码的重载。
关于c# - 为什么这会出现在我的 C# 字符串 : £ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/696659/