gpt4 book ai didi

c# - 在 C# 中将 ANSI (Windows 1252) 转换为 UTF8

转载 作者:太空狗 更新时间:2023-10-29 23:54:09 24 4
gpt4 key购买 nike

我已经 asked this before在 Stack Overflow 之前以一种迂回的方式,这次我想做对。如何将 ANSI(代码页 1252)转换为 UTF-8,同时保留特殊字符? (我知道 UTF-8 支持比 ANSI 更大的字符集,但如果我可以保留 ANSI 支持的所有 UTF-8 字符并将其余字符替换为 ? 之类的,那也没关系)

为什么我要转换 ANSI → UTF-8

我基本上是在编写一个程序,将 vCard 文件 (VCF) 拆分为单独的文件,每个文件包含一个联系人。我注意到诺基亚和索尼爱立信手机将备份 VCF 文件保存为 UTF-8(无 BOM),但 Android 将其保存为 ANSI (1252)。天知道其他手机以什么格式保存它们!

所以我的问题是

  1. vCard 文件的字符编码没有行业标准吗?
  2. 哪个更容易解决我的问题?将 ANSI 转换为 UTF8(和/或相反)或尝试检测输入文件的编码并通知用户?

长话短说需要知道如何将字符编码从 (ANSI/UTF8) 转换为 (UTF8/ANSI),同时保留所有特殊字符。

最佳答案

您不应从一种编码转换为另一种编码。您必须使用创建文件时使用的编码来读取每个文件,否则您将丢失信息。

一旦您使用正确的编码读取文件,您就会将内容作为 Unicode 字符串,您可以从那里使用您喜欢的任何编码保存它。

如果您需要检测编码,您可以按字节读取文件,然后查找特定于任一编码的字符代码。如果文件不包含特殊字符,则两种编码都可以使用,因为字符 32..127 对于两种编码都是相同的。

关于c# - 在 C# 中将 ANSI (Windows 1252) 转换为 UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386750/

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