I have a c++ application which calls a java function to which i need to pass a c++ string
C++ string (std::string) is utf8 encoded japanese language string and i am using
jace to convert my c++ string to java string
I am using a english locale machine for running this application,
the application works fine with japanese locale machine
The java string I get in the java function called has 2 initial charactors currupted in it
To see the exact problem i did the following
I converted the std::string (utf8 encoded string) to JString(jace.proxy.java.lang.string)
and then converted JString(jace.proxy.java.lang.string) to std::string
This the piece of code
dataVal is of type std::string
cout << testStr
Please suggest me any other way of doing this, or what is wrong with the above code
The actual and resulting strings are as follows (On windows locale)
Result String:: ?ら検索user.small.29
I know this is very late, but thought I'd post here for the sake of others... spread the knowledge.
You could construct the Java string using a JArray of JByte, and then tell Java to make the string by using the byte array using the UTF-8 character set.
// Construct JArray of JBytes
const int byteLength = myString.length();
// Copy the UTF-8 C-string characters into JArray
while (int i = 0; i < byteLength; ++i)
javaBytes[i] = myString[i];
// Construct Java string with explicit UTF-8 character set
jace::String javaString(javaBytes, "UTF-8");
As a side note - the ICU4C libraries make portable C++ Unicode strings fairly easy. It uses an internal UTF-16 data type, which can be used to 'go direct' to create a Java string. If you want portability in your C++ code, then I'd strongly urge people to look at the ICU library: http://www.icu-project.org/
If you're doing a Windows-only application, the wchar_t type is UTF-16 when compiling with Unicode enabled. You can also construct Java strings using an array of JChar in the same way above. I'd *definitely* stay away from wchar_t if you start mixing in UNIX platforms and switch to using the ICU libraries.
Log in to post a comment.
Sign up for the SourceForge newsletter:
You seem to have CSS turned off.
Please don't fill out this field.