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/p/1856279.html