1

我在 linux 中有一个不处理 unicode/UTF8 的控制台应用程序,并且我没有实施它的计划,因为除了这个问题之外没有必要。

用户正在将命令输入到不包含 ascii 字符的提示中,这导致了数据的神秘问题以及应该只包含 ascii 字符的文本配置文件中的问题。

处理这个问题的最佳方法是什么?是否有一种不太复杂的方法可以将 unicode 字符串转换回 ascii 或删除任何无法使用 ascii 字符集的可见部分打印的字符?

Unicode 对我来说似乎是一场彻头彻尾的噩梦。

4

2 回答 2

3

UTF-8 和许多单字节字符集与 ASCII 兼容,0-127 之间的值代表正确的 ASCII 字符。(在 UTF-8 的情况下,具有多字节序列的字符的每个字节都在此范围之外。)过滤掉其余的可以解决您的问题。

不过,您绝对应该改变态度并支持 UTF-8。

于 2013-01-15T21:01:17.030 回答
0

如果需要 ASCII,则测试并拒绝 0-127 之外的任何 char 值作为无效输入。在这种情况下,我不坚持传统的稳健性原则;代码应该很快失败。试图按摩模棱两可的数据会导致奇怪的行为

当然,很大程度上取决于域,但这是我的默认方法。先严格后放宽条件要比松懈后尝试应用限制来破坏以前工作的代码/配置更容易。

于 2013-01-15T21:43:01.833 回答