jar 接收utf-8字符乱码现象

1.今天用php去调用jar出现乱码现象

需要对传递的中文字符进行编码之后再传递这里我用的是urlencode编码,让后java再解码就正常了

这里贴一下代码:

<?php
exec("export LANG='en_US.UTF-8';");
$cmd_str = urlencode("C:\xampp\htdocs\java\jar\tetst_for_jacob.doc--安徽理工大学--xxx大学");
$cmd = '"C:Program FilesJavajdk1.8.0_181injava.exe" -Dfile.encoding=utf-8 -jar "C:xampphtdocsjavajar eplace_zhixie.jar" "'.$cmd_str.'"';

$res = trim(shell_exec($cmd));
var_dump($res);


/*{java.runtime.name=Java(TM) SE Runtime Environment,
sun.boot.library.path=C:Program FilesJavajre1.8.0_181in, java.vm.version=25.181-b13,
java.vm.vendor=Oracle Corporation, java.vendor.url=http://java.oracle.com/,
path.separator=;, java.vm.name=Java HotSpot(TM) 64-Bit Server VM,
file.encoding.pkg=sun.io, user.country=CN, user.script=,
sun.java.launcher=SUN_STANDARD, sun.os.patch.level=,
java.vm.specification.name=Java Virtual Machine Specification, u
ser.dir=C:java_word eplace_word_zhixie, java.runtime.version=1.8.0_181-b13,
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment,
java.endorsed.dirs=C:Program FilesJavajre1.8.0_181libendorsed, os.arch=amd64,
java.io.tmpdir=C:UsersADMINI~1AppDataLocalTemp2\, line.separator=
, java.vm.specification.vendor=Oracle Corporation,
user.variant=, os.name=Windows Server 2012 R2,
sun.jnu.encoding=GBK,
java.library.path=C:Program FilesJavajre1.8.0_181in;
C:WindowsSunJavain;C:Windowssystem32;
C:Windows;C:/Program Files/Java/jre1.8.0_181/bin/server;
C:/Program Files/Java/jre1.8.0_181/bin;C:/Program Files/Java/jre1.8.0_181/lib/amd64;
C:Program Files (x86)Common FilesOracleJavajavapath;C:Windowssystem32;
C:Windows;C:WindowsSystem32Wbem;
C:WindowsSystem32WindowsPowerShellv1.0;
C:Program FilesTortoiseSVNin;C:Program FilesJavajdk1.8.0_181in;
C:xamppphp;C:eclipseeclipse;;., java.specification.name=Java Platform API Specification, java.class.version=52.0, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, os.version=6.3, user.home=C:UsersAdministrator, user.timezone=, java.awt.printerjob=sun.awt.windows.WPrinterJob, file.encoding=UTF-8, java.specification.version=1.8, java.class.path=C:Program FilesJavajre1.8.0_181lib esources.jar;C:Program FilesJavajre1.8.0_181lib t.jar;C:Program FilesJavajre1.8.0_181libjsse.jar;C:Program FilesJavajre1.8.0_181libjce.jar;C:Program FilesJavajre1.8.0_181libcharsets.jar;C:Program FilesJavajre1.8.0_181libjfr.jar;C:Program FilesJavajre1.8.0_181libextaccess-bridge-64.jar;C:Program FilesJavajre1.8.0_181libextcldrdata.jar;C:Program FilesJavajre1.8.0_181libextdnsns.jar;C:Program FilesJavajre1.8.0_181libextjaccess.jar;C:Program FilesJavajre1.8.0_181libextjfxrt.jar;C:Program FilesJavajre1.8.0_181libextlocaledata.jar;C:Program FilesJavajre1.8.0_181libext ashorn.jar;C:Program FilesJavajre1.8.0_181libextsunec.jar;C:Program FilesJavajre1.8.0_181libextsunjce_provider.jar;C:Program FilesJavajre1.8.0_181libextsunmscapi.jar;C:Program FilesJavajre1.8.0_181libextsunpkcs11.jar;C:Program FilesJavajre1.8.0_181libextzipfs.jar;C:java_word eplace_word_zhixiein;C:java_word eplace_word_zhixielibjacob.jar, user.name=Administrator, java.vm.specification.version=1.8, sun.java.command=replace_word_zhixie.replace_word_zhixie, java.home=C:Program FilesJavajre1.8.0_181, sun.arch.data.model=64, user.language=zh, java.specification.vendor=Oracle Corporation, awt.toolkit=sun.awt.windows.WToolkit, java.vm.info=mixed mode, java.version=1.8.0_181, java.ext.dirs=C:Program FilesJavajre1.8.0_181libext;C:WindowsSunJavalibext, sun.boot.class.path=C:Program FilesJavajre1.8.0_181lib esources.jar;C:Program FilesJavajre1.8.0_181lib t.jar;C:Program FilesJavajre1.8.0_181libsunrsasign.jar;C:Program FilesJavajre1.8.0_181libjsse.jar;C:Program FilesJavajre1.8.0_181libjce.jar;C:Program FilesJavajre1.8.0_181libcharsets.jar;C:Program FilesJavajre1.8.0_181libjfr.jar;C:Program FilesJavajre1.8.0_181classes, java.vendor=Oracle Corporation, file.separator=\, java.vendor.url.bug=http://bugreport.sun.com/bugreport/, sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, sun.desktop=windows, sun.cpu.isalist=amd64}
*/

原文地址:https://www.cnblogs.com/jasonxiaoqinde/p/9884394.html