ICU字符集编码转换一例

// test.cpp

#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

#include "unicode\ucnv.h"

void main()
{
	FILE* p = fopen("euc.txt", "rt");
	string s;

	char c = fgetc(p);
	while(c!=EOF)
	{
		s += c;
		c = fgetc(p);
	}
	fclose(p);

	cout<<"変更しようとする文字列(EUC)は:"<<s.c_str()<<endl;

	UChar* ub = new UChar[s.length()];
	char* cb = new char[s.length()*4];
	
	UErrorCode err;
	UConverter* conv = ucnv_open("euc_jp", &err);
	int len = ucnv_toUChars(conv, ub, s.length(), s.c_str(), s.length(), &err);
	ucnv_close(conv);

	conv = ucnv_open("shift_jis", &err);
	len = ucnv_fromUChars(conv, cb, s.length()*4, ub, len, &err);
	ucnv_close(conv);

	cout<<"変更した文字列(SHIFT_JIS)は:"<<cb<<endl;
	delete[] ub;
	delete[] cb;

	getch();
}

转载于:https://www.cnblogs.com/lilei9110/archive/2010/10/20/1856279.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值