求 C语言 ascii 转制为 unicode (16位) 的API
(2012-06-07 01:02:22)
标签:
16
c语言
杂谈
求 C语言 ascii 转制为 unicode (16位)
的API记得C/C++中,字符串前面加个L就变成unicode编码了。我测试了一下:
sizeof("this") == 5
sizeof(L"this") == 20
(一个字符怎么占4字节呢?)
printf("size=%d\n",sizeof(L"this"));
请问,怎么样才能将点一个字节的ascii码字符转换成占2个字节的unicode字符呢?
谢谢! 本帖最后由 davelv 于 2010-12-15 11:21 编辑
这个也是Unicde,具体标准是UTF-32/UCS-4,也就是一个字符占四个字节。
和平台有关,你在windows下写这样的代码就是UTF-16,占2个字节。这个也是Unicde,具体标准是UTF-32/UCS-4,也就是一个字符占四个字节。
和平台有关,你在windows下写这样的 ...
davelv 发表于 2010-12-15 11:17
http://bbs.chinaunix.net/images/common/back.gif
我现在要调用JNI的NewString接口,而jchar是占两个字节的。
系统是:Linux ubuntu 2.6.35-22-generic
如何是好呢?
以下是NewString的声明:
static jstring NewString(JNIEnv* env, const jchar* unicodeChars,
jsize len)libiconvhttp://www.chinefr.com/,这个库可以转换
http://www.gnu.org/software/libiconv/#introductionlibiconv,这个库可以转换
davelv 发表于 2010-12-15 13:04
http://bbs.chinaunix.net/images/common/back.gif
写了个程度试了一下,不知道出了什么 诡异的错误:
#include
#include
#include
#include
#include
#include
using namespace std;
//ASCII UNICODE
typedef unsigned short char16;
int main(){
char* from = "this is a
test";
size_tfs = strlen(from) + 1;
char16*to = new char16;
size_tts = 2 * fs;
cout<
fs <<
"to_size="
<< ts
<
iconv_t cd =
iconv_open("UNICODE"http://www.kaidp.com/,
"ASCII");
assert(cd != (iconv_t)-1);
size_t csize = iconv(cd, &from,
&fs, (char**)&to,
&ts);
iconv_close(cd);
cout << from
<< endl
<< to
<< endl;
delete to;
return 0;
}JNI与字符串操作相关的接口,我找到了以下文档,供大家参考 :
http://download.oracle.com/ja
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。