gpt4 book ai didi

c# - 为什么这会出现在我的 C# 字符串 : £ 中

转载 作者:可可西里 更新时间:2023-11-01 09:06:01 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com