【发布时间】:2012-08-12 08:07:48
【问题描述】:
给定一个 C 中的字符串,我怎么知道它是用 ASCII 编码还是 Unicode 编码的?
我们什么都不知道。
【问题讨论】:
-
真正的 ASCII,没有超过 127 的字符,还是“extended ASCII”? UTF-8、UTF-16 还是其他?
-
暂且不说没有“unicode”之类的东西 - 相反,它是一系列相关的 unicode 编码,它通常是由谁给你字符串来告诉你什么是编码。
-
简短回答:你不知道。更长的答案:您可以做出相当合理的猜测,但几乎永远无法完全确定。
-
一些关于 Windows 记事本如何做到这一点以及各种后果的说明:blogs.msdn.com/b/oldnewthing/archive/2007/04/17/2158334.aspx(也请务必关注各种链接)。
-
如果我是个笨蛋,我会告诉你“如果是 ASCII,那么它也必须是 Unicode。”您的问题真的是如何判断 C 字符串是 UTF-8 编码还是引用 Windows-1250 之类的代码页?这是可行的。
标签: c string unicode encoding ascii