C语言unicode16位编码值,求 C语言 ascii 转制为 unicode (16位) 的API

求 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

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

a4c26d1e5885305701be709a3d33442f.png

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值