0

我正在解析/标记一组编译为 CSS 的语言,但我不知道应该如何处理非 ASCII 输入。显然很多人之前都处理过这个问题。

作为一般经验法则,我一直在阅读“转换为 UTF-8,处理并转换回您输入的任何编码”。我倾向于同意这种方法......

但我一直在想,我将直接使用的所有标点符号和数字都是 ASCII(代码点低于 127),而其他字符串都将被填充到哈希表中(即程序不应该关心你需要多少字节来表达任何给定的字符)。

问题来了:

  • 是否有任何正式字符集会与我感兴趣的代码点的 ASCII 定义冲突(全部低于 127)?

  • 在设置大 ole' 字符范围以匹配所有我不打算直接处理的字符并跳过整个宽字符 UTF-8 编码解码失败时,你能看到任何明显的错误吗?

例如:

//A-Z, a-z and all the non-ASCII stuff
character = (0x41..0x5A) || (0x61..0x7A) || (0x80..0xFF)

//match 1 or more
identifier = character+

非常感谢!

4

2 回答 2

1

如果您打算使用无意识的编码(如 PHP),那么您不能支持像 UTF-16 IE 这样的输入编码,编码必须是 ASCII 兼容的bitwise。不要与字符集中的 ASCII 兼容性混淆。

不经意编码对您很有效,因为数据只是通过。如果您需要以任何其他方式处理字符内容 - 每次都需要解码,因此您不妨在开始时对其进行解码。

不要对 UTF-8 中的内容进行编码(因此需要解码、声明、检测和其他复杂性),只需将其传递即可。如果输入为 UTF-8,则输出将为 UTF-8。如果输入是 Windows-1252,则输出将为 Windows-1252。最不意外...

于 2013-03-26T21:56:40.153 回答
0

EBCDIC。但你不应该担心这一点。

不过,一般来说,我认为最明智的方法是接受任何编码作为输入,然后输出 UTF-8。

于 2013-03-26T21:21:03.060 回答