ページ 11

続 日本語の表示

Posted: 2009年11月19日(木) 15:20
by dic
下のように関数を使ってUTF-8を変換しようとしたのですが
変換先のbuf2にはなにも変換されません
どこが悪いのでしょうか?
#include	<stdio.h>
#include	<locale.h>
#include	<windows.h>


void	load()
{
	FILE	*file = fopen( "0.txt", "rt" );
	char	buf[256];
	wchar_t	buf2[256];
	while( !feof(file) )
	{
		fgets( buf, sizeof(buf), file );
		MultiByteToWideChar( CP_UTF8, MB_USEGLYPHCHARS, buf, sizeof(buf), buf2, sizeof(buf2) );
		wprintf( buf2 );
	}
	fclose( file );

}


int		main()
{
	setlocale(LC_ALL, "japanese");

	load();

	return 0;

}

Re:続 日本語の表示

Posted: 2009年11月19日(木) 22:20
by Justy
 とりあえず、MB_USEGLYPHCHARSを 0にしてみて下さい。

Re:続 日本語の表示

Posted: 2009年11月20日(金) 22:09
by dic
うまく変換でき
表示もうまくいきました
ありがとうございました

Re:続 日本語の表示

Posted: 2009年11月20日(金) 22:56
by Justy
 ちなみにですね。
 MSVC8以降の場合、fopenの第2引数のところの最後に ",ccs=UTF-8"を追加してから
fgetws()などで読み込むと MultiByteToWideChar()で変換する必要がなくなりますよ。

fopen、_wfopen (CRT)
http://msdn.microsoft.com/ja-jp/library/yeby3zcb(VS.80).aspx

Visual Studio 2005以降でUNICODEテキストファイルを扱うときのコツ - nodchipの日記
http://d.hatena.ne.jp/nodchip/20090203/1233646804