none
WideCharToMultiByteを使うとアジア圏の言語だと?になる問題を回避したい RRS feed

  • 質問

  • 開発環境は VisualStudio2019 VC++MFC です。 (対象OSはWindows10以降)

    最終的な目標は使っているffmpegの関数avformat_open_inputのファイル名に char *を渡す事です。

    プログラムはUnicodeにしている為、現状はファイル名が入っているCStringを
    WideCharToMultiByteで charに変換してavformat_open_inputに渡しています。

    これだとCStringに中国語やハングル語などが入っているとそこだけ ? になります。

    テストコード

    	char pszText[8][1024];
    
    	CString strTest[] = {
    		// 特殊文字
    		_T("C:\\TEST\\℡ ㊤ ㊥ ㊦-0515.mpg"),
    		_T("C:\\TEST\\㌍ ㌦ ㌣ ㌫.mpg"),
    		// ハングル
    		_T("C:\\TEST\\안녕하세요-0515.mpg"),
    		_T("C:\\TEST\\各種動画\\안녕하세요-0515.mpg"),
    		// 中文
    		_T("C:\\TEST\\测试文件.MOV"),
    		_T("C:\\我学习汉语.mp4"),
    		// ベトナム
    		_T("C:\\TEST\\Nhật Bản.mpg"),
    		_T("C:\\TEST\\người yêu .mpg"),
    	};
    
    	for ( int i = 0; i < 8; i++  )
    		WideCharToMultiByte(CP_ACP, 0, strTest[i], -1, pszText[i], 1024, NULL, NULL);
    
    どこの国でも使えるようにする必要があるので、
    言語に関係なく、 CStringから char *に変換する方法がありましたらご教授ください。
     (とりあえずはコードの3国だけでも)

    よろしくお願いします。



    2022年6月15日 0:07

回答

すべての返信