当前位置: 代码迷 >> 其他开发语言 >> 关于在一个char[]数组里填方非Ascii码显示有关问题
  详细解决方案

关于在一个char[]数组里填方非Ascii码显示有关问题

热度:226   发布时间:2016-05-02 04:03:26.0
关于在一个char[]数组里填方非Ascii码显示问题
这边做一个小画面,显示一段日文字符。
本来想法也比较简单,易实现,首先将字符转化为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
  相关解决方案