[疑难] 菜鸟提问题
achun
2007-05-31
oldrev 写道 程序内部使用什么编码根系统平台有什么关系?
就是说作为通用语言的标准库,他的编写应该具有可移植性, 就我们现在所用的平台,windows,linux,mac os ........ 都是用ASCII编码. 另外用户较多的就算IBM 的 EBCDIC 编码了, ASCII: 'a'-'A' = 0x20; EBCDIC: 'A'-'a' = 0x40; 所以前面的算法中用表达式去计算而不是用常量,原因就是这个了. 不过 if ('a' <= c && c <= 'z') { if (!changed) { r = s.dup; changed = true; } r[i] = cast(char) (c - (cast(char)'a' - 'A')); } 这一段也有问题,(哈,不了解具体规则只是感觉上有问题) 因为 EBCDIC 编码中的 a...z是不连续的,中间有其他符号. 要这么说来最可靠的方法是查表法了. 不管你是否连续,或者是aAbA1234...*/..zZ的交叉. |
|
oldrev
2007-05-31
D语言的字符串函数本来就只处理UTF-8,这是一个约定,就算系统采用EBCDIC跟程序内部也没什么关系,只是输入输出的时候需要转换一下而已,难道在使用 UCS-2 的WindowsNT家族系统上D语言程序就不能用UTF-8了?
|