任何人都可以提供一个简单的示例来在Unicode文件中读取和写入Unicode字符吗?
答案 0 :(得分:2)
尝试http://utfcpp.sourceforge.net/。该链接有一个逐行读取utf8文件的介绍性示例。
答案 1 :(得分:1)
在linux上我使用非常标准的iconv
(link)库。一个过于简单的程序是:
#include <stdio.h>
#include <stdlib.h>
#include <iconv.h>
#define BUF_SZ 1024
int main( int argc, char* argv[] )
{
char bin[BUF_SZ];
char bout[BUF_SZ];
char* inp;
char* outp;
ssize_t bytes_in;
size_t bytes_out;
size_t conv_res;
if( argc != 3 )
{
fprintf( stderr, "usage: convert from to\n" );
return 1;
}
iconv_t conv = iconv_open( argv[2], argv[1] );
if( conv == (iconv_t)(-1) )
{
fprintf( stderr, "Cannot conver from %s to %s\n", argv[1], argv[2] );
return 1;
}
bytes_in = read( 0, bin, BUF_SZ );
{
bytes_out = BUF_SZ;
inp = bin;
outp = bout;
conv_res = iconv( conv, &inp, &bytes_in, &outp, &bytes_out );
if( conv_res >= 0 )
{
write( 1, bout, (size_t)(BUF_SZ) - bytes_out );
}
}
iconv_close( conv );
return 0;
}
演示转换过于简单。在现实世界中,您通常会有两个嵌套循环:
conv_res
然后检查errno
。答案 2 :(得分:0)
如果您使用的是Windows。 使用fgetws http://msdn.microsoft.com/en-us/library/c37dh6kf(VS.71).aspx阅读 和fputws http://msdn.microsoft.com/en-us/library/t33ya8ky(VS.71).aspx写。
示例代码位于提供的链接中。