gpt4 book ai didi

c - 给定一个 C 中的字符串,我怎么知道它是用 ASCII 还是 Unicode 编码的?

转载 作者:行者123 更新时间:2023-12-04 05:35:42 24 4
gpt4 key购买 nike

很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center .




9年前关闭。




给定一个 C 中的字符串,我怎么知道它是用 ASCII 还是 Unicode 编码的?

我们一无所知。

最佳答案

这其实是一个深奥而微妙的问题。有一些简单的案例可以剔除。剩下的就没有那么容易了。

例如,如果字符串以 Unicode 字节顺序标记开头,那么假设该字符串是 Unicode 可能是安全的。然而,并非所有 Unicode 字符串都以 BOM 开头。

如果字符串的每个字节都有其第 8 位清除,那么假设它是 7 位 ASCII 可能是安全的。如果为真,那么它当然也是有效的 UTF-8。但它可以用很少见但定义明确的 UTF-7 编码,其中所有字节都保证仅使用 7 位,从而为通信 channel 中的奇偶校验或其他损坏源留出空间。

您可以扫描字符串(或至少是字符串的前缀)并测试是否符合格式良好的 UTF-8。如果通过,则可能是 UTF-8。当然,它可能是其他一些编码,只是碰巧符合。

扫描是否符合 UTF-16LE 或 UTF-16BE 也是可能的,但有相同的警告。

Raymond Chen wrote about this in his blog ,从记事本应该如何对待一个文件的角度来看。

关于c - 给定一个 C 中的字符串,我怎么知道它是用 ASCII 还是 Unicode 编码的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979306/

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