Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以将UTF-8/UTF-16选项传递给从C+调用的JVM+;? 我有一个Windows C++程序,我想调用JVM,并可以传递一个选项,它可以从C++程序的命令行调用中得到(命令行选项可能不是纯文本,例如-dBLAH =日语)。日本"). h中的JavaVMOption结构似乎只将选项字符串定义为chars,所以看起来我不能只传递一个宽字符串 我尝试将它转换成UTF-8,并将其作为一个窄字符串存储在C++侧,然后在java端将其转换回来,但它看起来是“日本将“替换为实际的”?“字符,因此在转换取消转换过程中丢失_C++_Utf 8_Jvm - Fatal编程技术网

可以将UTF-8/UTF-16选项传递给从C+调用的JVM+;? 我有一个Windows C++程序,我想调用JVM,并可以传递一个选项,它可以从C++程序的命令行调用中得到(命令行选项可能不是纯文本,例如-dBLAH =日语)。日本"). h中的JavaVMOption结构似乎只将选项字符串定义为chars,所以看起来我不能只传递一个宽字符串 我尝试将它转换成UTF-8,并将其作为一个窄字符串存储在C++侧,然后在java端将其转换回来,但它看起来是“日本将“替换为实际的”?“字符,因此在转换取消转换过程中丢失

可以将UTF-8/UTF-16选项传递给从C+调用的JVM+;? 我有一个Windows C++程序,我想调用JVM,并可以传递一个选项,它可以从C++程序的命令行调用中得到(命令行选项可能不是纯文本,例如-dBLAH =日语)。日本"). h中的JavaVMOption结构似乎只将选项字符串定义为chars,所以看起来我不能只传递一个宽字符串 我尝试将它转换成UTF-8,并将其作为一个窄字符串存储在C++侧,然后在java端将其转换回来,但它看起来是“日本将“替换为实际的”?“字符,因此在转换取消转换过程中丢失,c++,utf-8,jvm,C++,Utf 8,Jvm,我的想法是否有误?这会不会不起作用?调用清楚地表明: typedef struct JavaVMOption { char *optionString; /* the option as a string in the default platform encoding */ void *extraInfo; } JavaVMOption; 术语“默认平台编码”是明确的,这并不意味着Windows上的utf-8。它意味着默认系统代码页使用的编码。如果您的计算机未配置为使用日文

我的想法是否有误?这会不会不起作用?

调用清楚地表明:

typedef struct JavaVMOption {
    char *optionString;  /* the option as a string in the default platform encoding */
    void *extraInfo;
} JavaVMOption;
术语“默认平台编码”是明确的,这并不意味着Windows上的utf-8。它意味着默认系统代码页使用的编码。如果您的计算机未配置为使用日文代码页(如932)然后,从utf-16字符串的转换将为无法转换的日语字符产生问号。这通常不是问题,因为日语用户将选择正确的代码页。没有解决方法来选择错误的代码页

确保选择了正确的系统代码页、控制面板+要更改的区域和语言。并将WideCharToMultiByte()与CP_ACP一起使用以进行转换。

调用清楚地表明:

typedef struct JavaVMOption {
    char *optionString;  /* the option as a string in the default platform encoding */
    void *extraInfo;
} JavaVMOption;
术语“默认平台编码”是明确的,这并不意味着Windows上的utf-8。它意味着默认系统代码页使用的编码。如果您的计算机未配置为使用日文代码页(如932)然后,从utf-16字符串的转换将为无法转换的日语字符产生问号。这通常不是问题,因为日语用户将选择正确的代码页。没有解决方法来选择错误的代码页


确保选择了正确的系统代码页、控制面板+要更改的区域和语言。并使用WideChartMultiByte()使用CP_ACP进行转换。

您可能会发现这封邮件很有趣:@kol:是的,非常有趣-谢谢。这将是一个非常受欢迎的改进。您可能会发现这封邮件很有趣:@kol:是的,非常有趣-谢谢。这将是一个非常受欢迎的改进。IMHO,CP936应该是简体中文(GBK)的代码页,不是日语。日语(Shift JIS)的代码页是CP932。@Hans:谢谢你帮我澄清。我希望太多了。IMHO,CP936应该是简体中文(GBK)的代码页,而不是日语。日语(Shift JIS)的代码页是CP932。@Hans:谢谢你帮我澄清。我希望太多了。