假设我安装了具有相应字形的字体,是否有一个用于Windows XP的命令shell将显示Unicode字符?至少应该正确显示Unicode的两件事:
这是我到目前为止所尝试的:
没运气.我甚至尝试为cmd/PowerShell安装自定义字体.PowerShell和cmd.exe似乎是Unicode感知的,因为我可以将不可打印的框复制/粘贴到那里,它将粘贴到具有正确字符的其他应用程序中.Cygwin(?)似乎转换为?字符和复制/粘贴中的字符.
有任何想法吗?
我正在编写一些单元测试,用于验证我们处理各种使用除普通拉丁字母之外的其他字符集的资源:Cyrilic,Hebrew等.
我遇到的问题是我找不到在测试源文件中嵌入期望的方法:这是我正在尝试做的一个例子......
///
/// Protected: TestGetHebrewConfigString
///
void CPrIniFileReaderTest::TestGetHebrewConfigString()
{
prwstring strHebrewTestFilePath = GetTestFilePath( strHebrewTestFileName );
CPrIniFileReader prIniListReader( strHebrewTestFilePath.c_str() );
prIniListReader.SetCurrentSection( strHebrewSubSection );
CPPUNIT_ASSERT( prIniListReader.GetConfigString( L"?????????" ) == L"????????") );
}
Run Code Online (Sandbox Code Playgroud)
这根本不起作用.以前我使用一个宏调用一个例程将一个窄字符串转换为一个宽字符串(我们在应用程序中使用towstring所以它是现有代码)
#define UNICODE_CONSTANT( CONSTANT ) towstring( CONSTANT )
wstring towstring( LPCSTR lpszValue )
{
wostringstream os;
os << lpszValue;
return os.str();
}
Run Code Online (Sandbox Code Playgroud)
上面测试中的断言变为:
CPPUNIT_ASSERT( prIniListReader.GetConfigString( UNICODE_CONSTANT( "?????????" ) ) == UNICODE_CONSTANT( "????????" ) );
Run Code Online (Sandbox Code Playgroud)
这在OS X上工作正常,但现在我正在移植到linux,我发现测试都失败了:它们都感觉相当hackish.任何人都能告诉我他们是否有更好的解决方案来解决这个问题?