[疑难] 菜鸟提问题

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了?
Global site tag (gtag.js) - Google Analytics