首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WriteAllText、字符编码、£和?

WriteAllText、字符编码、£和?
EN

Stack Overflow用户
提问于 2017-06-23 04:58:48
回答 3查看 1.3K关注 0票数 0

下面是一个例子:

代码语言:javascript
复制
string testfile1 = Path.Combine(HttpRuntime.AppDomainAppPath, "folder\\" + "test1.txt");
if (!System.IO.File.Exists(testfile1))
{
    System.IO.File.WriteAllText(testfile1, "£100", System.Text.Encoding.ASCII);
}

string testfile2 = Path.Combine(HttpRuntime.AppDomainAppPath, "folder\\" + "test2.txt");
if (!System.IO.File.Exists(testfile2))
{
    System.IO.File.WriteAllText(testfile2, "£100", System.Text.Encoding.UTF8);
}

注意编码。第一个输出是多少?100。第二个输出为£100。

我知道编码是不同的,但是有人能解释一下为什么ASCII编码不能写£符号吗?

EN

回答 3

Stack Overflow用户

发布于 2017-06-23 04:59:56

ASCII不包括“‘t”字符。也就是说,没有表示该符号字节值(也没有多字节值-它们不存在于ASCII中)。所以它展示了一个"“来告诉你这一点。另一方面,UTF8确实包含了它。

请参阅here查看ASCII码中所有可打印字符的列表。

如果您必须使用ASCII,请考虑使用前面提到的用于英镑的“英镑”。(也可能与Extended ASCII相关。)

票数 3
EN

Stack Overflow用户

发布于 2017-06-23 05:33:57

要处理ASCII和某些字符,很大程度上取决于您使用的代码页。 is 不是拉丁字母表中通用的字符,因此没有出现在标准的ASCII码集中。

查看at this articlethis one on code pages,看看字符限制是如何解决的,以及为什么它不会出现在所有地方。

票数 1
EN

Stack Overflow用户

发布于 2020-04-23 21:17:38

正如Hans指出的,ASCII是为美国人设计的,只使用0-127的代码点,其他英语国家可以忽略不计,除非他们试图使用像is这样的模糊符号,代码点在0-127范围之外。我假设你住在英国,只瞄准来自英国或西欧的客户。不要使用Encoding.ASCII而是Encoding.Default,它在英国的代码页是1252,当然不是在土耳其。您可以为ASCII范围0-127中的每个字符获取实际的ASCII,但也可以使用磅符号所在的128-255范围内的字符。但请注意,如果有人试图读取文件,假设它是以UTF8编码的,则to符号将使内容变得模糊,因为它包含一个在UTF8中不存在的字节。这是通过一些奇怪的字形来表示的,比如�。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44709293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档