首先,这个问题不严谨了,如果给定一个任意字符串,不可能断定它是否包含汉字,只有知道其编码方式才可能判断,比如已知为UTF-16,可根据UNICODE标准汉字代码点范围判断,如果是ANSI本地化编码如GB2312(1980):双字节最高位为1, 范围:1:[0xA1-0xFE],2:[0xA1-0xFE],7445个字符,汉字范围:1:[0xB0-0xF7],2:[0xA1-0xFE]。
其次,GB2312,GBK,GB18030这些汉字编码方式都是字节流,像utf-8一样不存在字节序的问题,和x86等平台架构无关,如果是UTF-16和UTF-32才要考虑这个问题。
对于GBK和GB2312的编码方式汉字编码用两个字节表示,特点是第一个字节的最高位为1
X86平台采用little-endian 故高字节在高位。
如下代码将输入的中文与英文混合字符串中的英文中的大写字母改为小写字母。
简单的判定方法,不够准确,只适用于GB系列和BIG5系列编码
更多细节待续