首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 其他开发语言 >

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

2013-11-20 
关于在一个char[]数组里填方非Ascii码显示问题这边做一个小画面,显示一段日文字符。本来想法也比较简单,易

关于在一个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

热点排行