diff options
author | Jose <jose@zeroc.com> | 2009-11-10 05:30:26 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2009-11-10 05:30:26 +0100 |
commit | 4247c9e2c2612394a5f4d63a65ba538f975906d4 (patch) | |
tree | 96d3308681d9b0684ce5dd763f5a5d415eaf09d7 /cpp/src/Ice/StringConverter.cpp | |
parent | Win32 64 bits compilation error (diff) | |
download | ice-4247c9e2c2612394a5f4d63a65ba538f975906d4.tar.bz2 ice-4247c9e2c2612394a5f4d63a65ba538f975906d4.tar.xz ice-4247c9e2c2612394a5f4d63a65ba538f975906d4.zip |
Fixed 3962 - Berkeley DB, problems with unicode paths.
Diffstat (limited to 'cpp/src/Ice/StringConverter.cpp')
-rw-r--r-- | cpp/src/Ice/StringConverter.cpp | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/cpp/src/Ice/StringConverter.cpp b/cpp/src/Ice/StringConverter.cpp index 3485a19c7e3..cf30a6ff9ce 100644 --- a/cpp/src/Ice/StringConverter.cpp +++ b/cpp/src/Ice/StringConverter.cpp @@ -252,7 +252,7 @@ createIceStringConverter(const CommunicatorPtr& communicator, const string& name { if(args[i].find("windows=") == 0) { - cp = atoi(args[i].substr(strlen("windows=")).c_str()); + cp = atoi(args[i].substr(strlen("windows=")).c_str()); } else if(args[i].find("iconv=") != 0) { @@ -342,3 +342,47 @@ createIceStringConverter(const CommunicatorPtr& communicator, const string& name } } +string +Ice::nativeToUTF8(const Ice::StringConverterPtr& converter, const string& str) +{ + if(!converter) + { + return str; + } + if(str.empty()) + { + return str; + } + IceInternal::UTF8BufferI buffer; + Ice::Byte* last = converter->toUTF8(str.data(), str.data() + str.size(), buffer); + return string(reinterpret_cast<const char*>(buffer.getBuffer()), last - buffer.getBuffer()); +} + +string +Ice::nativeToUTF8(const Ice::CommunicatorPtr& ic, const string& str) +{ + return nativeToUTF8(IceInternal::getInstance(ic)->initializationData().stringConverter, str); +} + +string +Ice::UTF8ToNative(const Ice::StringConverterPtr& converter, const string& str) +{ + if(!converter) + { + return str; + } + if(str.empty()) + { + return str; + } + string tmp; + converter->fromUTF8(reinterpret_cast<const Ice::Byte*>(str.data()), + reinterpret_cast<const Ice::Byte*>(str.data() + str.size()), tmp); + return tmp; +} + +string +Ice::UTF8ToNative(const Ice::CommunicatorPtr& ic, const std::string& str) +{ + return UTF8ToNative(IceInternal::getInstance(ic)->initializationData().stringConverter, str); +} |