这边做一个小画面,显示一段日文字符。
本来想法也比较简单,易实现,首先将字符转化为unicode,然后再设置unicode字库,然后再将字符集设置到text框中,显示出来,这样实现了,也成功了。
但是我现在有个新的想法:在一个数组里char str_tmp[] = "***"; ***代表的是一段日文字符串,也可以使中文字符串。
然后我再将text框设成unciode编码, 然后将str_tmp设置到text框里,显示出来,乱码。
这里我就有点疑问:当非Ascii码设置成字符串中,其字符串中的单个字符是什么呢?
还请大神指点一二。
环境:Win64, C语言
图像工具:OpenCV
字库:UNICODE_BIG_ENDIAN,UNICODE_LITTLE_ENDIAN, ASCII
------解决方案--------------------
试验一下:
/tmp/ cat multibyte.c
#include <stdio.h>
#include <string.h>
int main() {
char a[] = "好";
int i;
printf("length of a = %d\n", strlen(a));
for (i=0; i<strlen(a); ++i) {
printf("%dth byte = %x\n", i, (unsigned char)a[i]);
};
}
/tmp/ gcc multibyte.c
/tmp/ ./a.out
length of a = 3
0th byte = e5
1th byte = a5
2th byte = bd
E5A5BD是“好”字的utf-8编码。
char[]不能直接表示多字节字符串。要使用多字节字符串,参考下面的链接:
http://book.51cto.com/art/200708/54974.htm