字符集

CBrother默认字符集为utf-8,*.cb文件也需要使用utf-8,如果使用了其他编码,会出现编译不通过或者乱码的情况。

字符串

  1. var str = "aaaa";
  2. var str2 = "中文";

如上,凡是代码里双引号直接写出来的字符串都是utf-8

外来字符串

外来字符串指从文件里读取,或者从网络接收的数据。 假设工作目录下有一个gbk文件格式char.txt,内容为"aaa中文"。

  1. function main(parm)
  2. {
  3. var file = new File(GetRoot() + "char.txt");
  4. var str = file.read();
  5. print str;
  6. }

结果:

字符集 - 图1

CBrother所有的字符串处理都是按照utf-8格式来的,所以print打印之后中文成了乱码。

CBrother的变量可以保存一个非utf-8的字符串,如果你只是临时存放,后续要保持原格式存入文件或者通过网络发送,那么你并不需要处理它。

但是如果你后续是要在Cbrother内部对这个字符串进行处理,那么你需要转码。

  1. function main(parm)
  2. {
  3. var file = new File(GetRoot() + "char.txt");
  4. var str = file.read();
  5. var utf8str = str_convert(str,"gbk","utf-8");
  6. print str;
  7. print utf8str;
  8. }

结果:

字符集 - 图2

转码

Cbrother提供了str_convert方法,来做字符串的转码工作。

str_convert(str,"srcCode","tagCode") 将str从srcCode编码转化到tagCode编码 var str = str_convert("aaa","utf-8","gbk")

支持转换格式 "gbk","utf-8","utf-16","utf-32","ascii","wstring"

gbk,utf-8,utf-16,utf-32

标准编码

wstring

非标准编码,是为了和c语言中的wchar_t对应。可以称作宽字符。宽字符在windows下编码为utf-16,在linux和macos上utf-32编码。

ascii

计算机本地字符集,中文windows系统为gbk,中文繁体系统为big5,linux和macos均为utf-8。为了考虑代码的跨平台性,建议不要使用。