UTF8: Correct MSW issue with previous commit
Linux does not handle the resize command with wide-character extended table UTF-8. The solution did not work for W7-32bit. This is a compromise, attempting first the preferred, previous solution and falling back to the secondary solution.
This commit is contained in:
parent
b37bc69476
commit
6106210c87
|
@ -201,9 +201,20 @@ bool IsUTF8( const char* aString )
|
||||||
|
|
||||||
UTF8::UTF8( const wchar_t* txt )
|
UTF8::UTF8( const wchar_t* txt )
|
||||||
{
|
{
|
||||||
wxCharBuffer charbuf = wxSafeConvertWX2MB( txt );
|
try
|
||||||
|
{
|
||||||
|
size_t len = wcslen( txt ) * 4 + 1;
|
||||||
|
char temp[len];
|
||||||
|
wxConvUTF8.WC2MB( temp, txt, len );
|
||||||
|
m_s.assign( temp );
|
||||||
|
}
|
||||||
|
catch(...)
|
||||||
|
{
|
||||||
|
auto string = wxSafeConvertWX2MB( txt );
|
||||||
|
m_s.assign( string );
|
||||||
|
}
|
||||||
|
|
||||||
m_s.assign( charbuf.data() );
|
m_s.shrink_to_fit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,13 +15,13 @@ void callee( const wxString& aString )
|
||||||
|
|
||||||
int main( int argc, char** argv )
|
int main( int argc, char** argv )
|
||||||
{
|
{
|
||||||
UTF8 bozo = "ü";
|
UTF8 bozo = "This is a test of UTF-8: ü‱☺😕😱";
|
||||||
|
|
||||||
callee( bozo );
|
callee( bozo );
|
||||||
|
|
||||||
wxString s = bozo;
|
wxString s = bozo;
|
||||||
|
|
||||||
wxString b = bozo;
|
UTF8 b = s;
|
||||||
|
|
||||||
if( s.IsEmpty() )
|
if( s.IsEmpty() )
|
||||||
{
|
{
|
||||||
|
@ -30,8 +30,23 @@ int main( int argc, char** argv )
|
||||||
|
|
||||||
if( s != bozo.wx_str() )
|
if( s != bozo.wx_str() )
|
||||||
{
|
{
|
||||||
printf( "string miscompare\n" );
|
printf( "wxString conversion error\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( b != bozo )
|
||||||
|
{
|
||||||
|
printf( "From string conversion error\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
auto pos = bozo.begin();
|
||||||
|
auto end = bozo.end();
|
||||||
|
|
||||||
|
while( pos != end )
|
||||||
|
{
|
||||||
|
printf( "%c", *pos++ );
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue