用VC6 App调用第三方Java WebService后的结果字符串乱码问题的解决!
码的中文GBK解码utf-8字节码后的错乱形式它的Utf-8形式的字节码16进制为00000000h: E4 B8 8A E4 BC A0 E6 88 90 E5 8A 9F 21 ; 涓婁紶鎴愬姛!..| 乱码字符 | GBK 编码 (十六进制) | |----------|---------------------| | 涓 | E4 B8 | | 婁 | 8A E4 | | 紶 | BC A0 | | 鎴 | E6 88 | | 夽 | 90 E5 | | 姛 | 8A 9F |同样的还可以将这个16进制用UTF-8 格式每三个字节码显示一个中文E4 B8 8A → 上 E4 BC A0 → 传 E6 88 90 → 成 E5 8A 9F → 功 21 → !所以我们要还原这个过程将GBK乱码反解成utf-8的原始字节再将utf-8格式转成unicode就能正确在VC中 messagebox了不及格的程序员-八神其实事情并不是这样的简单首先它传回来时并不是以e4b88a 这种utf-8 原始码传回来的现在我们看到的都是系统平台转换后的后面我为了捕捉原始码上了代理软件截取了通信的二进制原始信息它不仅可以返回成功信息还可以返回错误信息//下面为上传失败的返回错误信息涓婁紶澶辫触锛佷紒涓氬敮涓鏍囪瘑鐮侀獙璇佷笉閫氳繃锛//返回的乱码翻译过来上传失败企业唯?? 标识码验证不通过?? 正常脑补后修正实际应为上传失败企业唯一标识码验证不通过下面我们来分析一下为什么没有正确解码现在拿出乱码部分 utf-16的 中文显示涓婁紶澶辫触锛佷紒涓氬敮涓鏍囪瘑鐮侀獙璇佷笉閫氳繃锛 00000000h: 93 6D 41 5A 36 7D B6 6F AB 8F E6 89 1B 95 77 4F ; 搈AZ6}秓珡鎵.晈O 00000010h: 12 7D 93 6D 2C 6C 6E 65 93 6D FD FF CD 93 EA 56 ; .}搈,lne搈?蛽闢 //cd93 镙 00000020h: 11 76 2E 94 80 4F 59 73 87 74 77 4F 09 7B AB 95 ; .v.攢OYs噒wO.{珪 00000030h: 33 6C 43 7E 1B 95 FD FF ; 3lC~.朂 //FDFF ? 然后 好巧不巧地 与 UTF-8 格式的 gbk式 解码 高度相似 中文为上传失败企业唯?? 标识码验证不通过?? 00000000h: E4 B8 8A E4 BC A0 E5 A4 B1 E8 B4 A5 EF BC 81 E4 ; 涓婁紶澶辫触锛佷 00000010h: BC 81 E4 B8 9A E5 94 AF E4 B8 20 E6 A0 87 E8 AF ; 紒涓氬敮涓 鏍囪? //??(E4B820)标(e6a087)识(E8AF86)码(E7A081) 00000020h: 86 E7 A0 81 E9 AA 8C E8 AF 81 E4 B8 8D E9 80 9A ; 嗙爜楠岃瘉涓嶉€? 00000030h: E8 BF 87 EF BC 20 ; 杩囷?通过以上对比结论是 乱码的GBK编码的16进制就是它的 正确UTF-8格式的字节码就是说将这些字节按utf-8格式解码就显示出正确的中文了FDFF是未能找到映射字符被充的空白占位符未能被解析也不能还原原始码已丢失。 UTF-8 : EF BF BDHTTP/1.1 200 Server: nginx/1.26.2 Date: Thu, 23 Apr 2026 08:09:39 GMT Content-Type: text/xml;charsetUTF-8 Transfer-Encoding: chunked Connection: close soap:Envelope xmlns:soaphttp://schemas.xmlsoap.org/soap/envelope/ xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancesoap:Bodyns1:uploaddevicemanagesoldreturnrecordsResponse xmlns:ns1DevManagens1:outlt;?xml version1.0 encodingUTF-8?lt;resultlt;error涓婁紶澶辫触锛佷紒涓氬敮涓 鏍囪瘑鐮侀獙璇佷笉閫氳繃锛 lt;/errorlt;/result/ns1:out/ns1:uploaddevicemanagesoldreturnrecordsResponse/soap:Body/soap:Envelope我们可以看到它内存里返回的字符串信息 soap 包裹着乱码中文 e6 b6 93 就是涓 utf-8的表示0:000 x *** WARNING: Unable to verify checksum for C:\WINDOWS\assembly\NativeImages_v4.0.30319_32\System\f291ffc218da543ab4e20e70929af20d\System.ni.dll 0019f358 this 0x024d26fc 0019f354 request 0x02631504 0019f350 res 0x02664034 0019f34c httpWebResponse 0x02664034 0019f348 memoryStream 0x02664370 0019f344 responseStream 0x02663dc0 0019f340 buffer 0x02664408 0019f33c bytesRead 0n517 0019f338 strUtf8 0x026656ec soap:Envelope xmlns:soaphttp://schemas.xmlsoap.org/soap/envelope/ xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancesoap:Bodyns1:uploaddevicemanagesoldreturnrecordsResponse xmlns:ns1DevManagens1:outlt;?xml version1.0 encodingUTF-8?lt;resultlt;error涓婁紶澶辫触锛佷紒涓氬敮涓鏍囪瘑鐮侀獙璇佷笉閫氳繃锛lt;/errorlt;/result/ns1:out/ns1:uploaddevicemanagesoldreturnrecordsResponse/soap:Body/soap:Envelope 0019f334 CS$1$0000 0x00000000 0019f330 CS$4$0001 true db 0x02664408 L1000 02664408 40 5c 70 6d 00 10 00 00-3c 73 6f 61 70 3a 45 6e \pm....soap:En 02664418 76 65 6c 6f 70 65 20 78-6d 6c 6e 73 3a 73 6f 61 velope xmlns:soa 02664428 70 3d 22 68 74 74 70 3a-2f 2f 73 63 68 65 6d 61 phttp://schema 02664438 73 2e 78 6d 6c 73 6f 61-70 2e 6f 72 67 2f 73 6f s.xmlsoap.org/so 02664448 61 70 2f 65 6e 76 65 6c-6f 70 65 2f 22 20 78 6d ap/envelope/ xm 02664458 6c 6e 73 3a 78 73 64 3d-22 68 74 74 70 3a 2f 2f lns:xsdhttp:// 02664468 77 77 77 2e 77 33 2e 6f-72 67 2f 32 30 30 31 2f www.w3.org/2001/ 02664478 58 4d 4c 53 63 68 65 6d-61 22 20 78 6d 6c 6e 73 XMLSchema xmlns 02664488 3a 78 73 69 3d 22 68 74-74 70 3a 2f 2f 77 77 77 :xsihttp://www 02664498 2e 77 33 2e 6f 72 67 2f-32 30 30 31 2f 58 4d 4c .w3.org/2001/XML 026644a8 53 63 68 65 6d 61 2d 69-6e 73 74 61 6e 63 65 22 Schema-instance 026644b8 3e 3c 73 6f 61 70 3a 42-6f 64 79 3e 3c 6e 73 31 soap:Bodyns1 026644c8 3a 75 70 6c 6f 61 64 64-65 76 69 63 65 6d 61 6e :uploaddeviceman 026644d8 61 67 65 73 6f 6c 64 72-65 74 75 72 6e 72 65 63 agesoldreturnrec 026644e8 6f 72 64 73 52 65 73 70-6f 6e 73 65 20 78 6d 6c ordsResponse xml 026644f8 6e 73 3a 6e 73 31 3d 22-44 65 76 4d 61 6e 61 67 ns:ns1DevManag 02664508 65 22 3e 3c 6e 73 31 3a-6f 75 74 3e 26 6c 74 3b ens1:out 02664518 3f 78 6d 6c 20 76 65 72-73 69 6f 6e 3d 22 31 2e ?xml version1. 02664528 30 22 20 65 6e 63 6f 64-69 6e 67 3d 22 55 54 46 0 encodingUTF 02664538 2d 38 22 3f 3e 26 6c 74-3b 72 65 73 75 6c 74 3e -8?result 02664548 26 6c 74 3b 65 72 72 6f-72 3e e6 b6 93 e5 a9 81 error...... 02664558 e7 b4 b6 e6 be b6 e8 be-ab e8 a7 a6 e9 94 9b e4 ................ 02664568 bd b7 e7 b4 92 e6 b6 93-e6 b0 ac e6 95 ae e6 b6 ................ 02664578 93 ef bf bd e9 8f 8d e5-9b aa e7 98 91 e9 90 ae ................ 02664588 e4 be 80 e7 8d 99 e7 92-87 e4 bd b7 e7 ac 89 e9 ................ 02664598 96 ab e6 b0 b3 e7 b9 83-e9 94 9b ef bf bd 26 6c ..............l 026645a8 74 3b 2f 65 72 72 6f 72-3e 26 6c 74 3b 2f 72 65 t;/error/re 026645b8 73 75 6c 74 3e 3c 2f 6e-73 31 3a 6f 75 74 3e 3c sult/ns1:out 026645c8 2f 6e 73 31 3a 75 70 6c-6f 61 64 64 65 76 69 63 /ns1:uploaddevic 026645d8 65 6d 61 6e 61 67 65 73-6f 6c 64 72 65 74 75 72 emanagesoldretur 026645e8 6e 72 65 63 6f 72 64 73-52 65 73 70 6f 6e 73 65 nrecordsResponse 026645f8 3e 3c 2f 73 6f 61 70 3a-42 6f 64 79 3e 3c 2f 73 /soap:Body/s 02664608 6f 61 70 3a 45 6e 76 65-6c 6f 70 65 3e 00 00 00 oap:Envelope我为了看着方便简单对照了一下UTF-8 涓E6 B6 93, GBK 涓 E4 B8UTF-8 婁E5 9A 81, GBK 婁 8A E4UTF-8 紶E7 B4 B6, GBK 紶 BC A0UTF-8 上E4 B8 8A 传E4 BC A0并用 wingate 通信代理截取通信内容是否为原始信息//不及格的程序员-八神00041860h: 55 54 46 2D 38 0D 0A 54 72 61 6E 73 66 65 72 2D ; UTF-8..Transfer- 00041870h: 45 6E 63 6F 64 69 6E 67 3A 20 63 68 75 6E 6B 65 ; Encoding: chunke 00041880h: 64 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 63 ; d..Connection: c 00041890h: 6C 6F 73 65 0D 0A 0D 0A 32 30 35 0D 0A 3C 73 6F ; lose....205..so 000418a0h: 61 70 3A 45 6E 76 65 6C 6F 70 65 20 78 6D 6C 6E ; ap:Envelope xmln 000418b0h: 73 3A 73 6F 61 70 3D 22 68 74 74 70 3A 2F 2F 73 ; s:soaphttp://s 000418c0h: 63 68 65 6D 61 73 2E 78 6D 6C 73 6F 61 70 2E 6F ; chemas.xmlsoap.o 000418d0h: 72 67 2F 73 6F 61 70 2F 65 6E 76 65 6C 6F 70 65 ; rg/soap/envelope 000418e0h: 2F 22 20 78 6D 6C 6E 73 3A 78 73 64 3D 22 68 74 ; / xmlns:xsdht 000418f0h: 74 70 3A 2F 2F 77 77 77 2E 77 33 2E 6F 72 67 2F ; tp://www.w3.org/ 00041900h: 32 30 30 31 2F 58 4D 4C 53 63 68 65 6D 61 22 20 ; 2001/XMLSchema 00041910h: 78 6D 6C 6E 73 3A 78 73 69 3D 22 68 74 74 70 3A ; xmlns:xsihttp: 00041920h: 2F 2F 77 77 77 2E 77 33 2E 6F 72 67 2F 32 30 30 ; //www.w3.org/200 00041930h: 31 2F 58 4D 4C 53 63 68 65 6D 61 2D 69 6E 73 74 ; 1/XMLSchema-inst 00041940h: 61 6E 63 65 22 3E 3C 73 6F 61 70 3A 42 6F 64 79 ; ancesoap:Body 00041950h: 3E 3C 6E 73 31 3A 75 70 6C 6F 61 64 64 65 76 69 ; ns1:uploaddevi 00041960h: 63 65 6D 61 6E 61 67 65 73 6F 6C 64 72 65 74 75 ; cemanagesoldretu 00041970h: 72 6E 72 65 63 6F 72 64 73 52 65 73 70 6F 6E 73 ; rnrecordsRespons 00041980h: 65 20 78 6D 6C 6E 73 3A 6E 73 31 3D 22 44 65 76 ; e xmlns:ns1Dev 00041990h: 4D 61 6E 61 67 65 22 3E 3C 6E 73 31 3A 6F 75 74 ; Managens1:out 000419a0h: 3E 26 6C 74 3B 3F 78 6D 6C 20 76 65 72 73 69 6F ; lt;?xml versio 000419b0h: 6E 3D 22 31 2E 30 22 20 65 6E 63 6F 64 69 6E 67 ; n1.0 encoding 000419c0h: 3D 22 55 54 46 2D 38 22 3F 3E 26 6C 74 3B 72 65 ; UTF-8?lt;re 000419d0h: 73 75 6C 74 3E 26 6C 74 3B 65 72 72 6F 72 3E E6 ; sultlt;error? 000419e0h: B6 93 E5 A9 81 E7 B4 B6 E6 BE B6 E8 BE AB E8 A7 ; 稉濠佺炊婢惰精瑙 000419f0h: A6 E9 94 9B E4 BD B7 E7 B4 92 E6 B6 93 E6 B0 AC ; ﹂敍浣风磼娑撴艾 00041a00h: E6 95 AE E6 B6 93 EF BF BD E9 8F 8D E5 9B AA E7 ; 鏁稉锟介弽鍥 00041a10h: 98 91 E9 90 AE E4 BE 80 E7 8D 99 E7 92 87 E4 BD ; 槕閻線鐛欑拠浣 00041a20h: B7 E7 AC 89 E9 96 AB E6 B0 B3 E7 B9 83 E9 94 9B ; 风瑝闁俺绻冮敍 00041a30h: EF BF BD 26 6C 74 3B 2F 65 72 72 6F 72 3E 26 6C ; 锟?lt;/errorl 00041a40h: 74 3B 2F 72 65 73 75 6C 74 3E 3C 2F 6E 73 31 3A ; t;/result/ns1: 00041a50h: 6F 75 74 3E 3C 2F 6E 73 31 3A 75 70 6C 6F 61 64 ; out/ns1:upload 00041a60h: 64 65 76 69 63 65 6D 61 6E 61 67 65 73 6F 6C 64 ; devicemanagesold 00041a70h: 72 65 74 75 72 6E 72 65 63 6F 72 64 73 52 65 73 ; returnrecordsRes 00041a80h: 70 6F 6E 73 65 3E 3C 2F 73 6F 61 70 3A 42 6F 64 ; ponse/soap:Bod 00041a90h: 79 3E 3C 2F 73 6F 61 70 3A 45 6E 76 65 6C 6F 70 ; y/soap:Envelop 00041aa0h: 65 3E ; e HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.9044) Content-Type: text/xml; charsetutf-8 SOAPAction: Host: 222.185.127.216:7003 Content-Length: 609 Expect: 100-continue Connection: Keep-Alive到目前为止我们认为它是 将utf-8的文字gbk编码了一次又再utf-8的输出给客户端当时我就想用java来还原这个过程看看我猜的对不对但是我是在android手机的java环境测试的 ,代码如下结果并没有返回我期望的上传失败企业唯?? 标识码验证不通过??而是“上传失败企业唯一标识码验证不通过?”package com.bosd.javatest; ..//忽略 public class MainActivity extends AppCompatActivity { private AppBarConfiguration appBarConfiguration; private ActivityMainBinding binding; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); setSupportActionBar(binding.toolbar); String correctMessage null; try { correctMessage 上传失败企业唯一标识码验证不通过; } catch (Exception e) { } System.out.println(1. 正确的原始消息: correctMessage); byte[] wrongGbkBytes new byte[0]; // 获取正确的 UTF-8 字节 try { wrongGbkBytes correctMessage.getBytes(utf-8); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } System.out.println(Original UTF-8 Hex); printHex(wrongGbkBytes); String corruptedString null; try { corruptedString new String(wrongGbkBytes,GBK); System.out.println(After GBK Encode Utf-8 Hex); printHex(corruptedString.getBytes(gbk)); } catch (Exception e) { } System.out.println(2. 服务端错误解读后产生的乱码字符串: corruptedString); byte[] finalBytesSent new byte[0]; try { finalBytesSent corruptedString.getBytes(utf-8); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } System.out.println(3. 最终发送给客户端的 UTF-8 字节 (十六进制): ); printHex(finalBytesSent); String whatClientSees null; try { whatClientSees new String(finalBytesSent, utf-8); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } System.out.println(4. 客户端最终看到的内容: whatClientSees); byte[] restoredUtf8Bytes new byte[0]; try { restoredUtf8Bytes whatClientSees.getBytes(GBK); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } String fixedMessage new String(restoredUtf8Bytes, StandardCharsets.UTF_8); System.out.println(5. 修复后的消息: fixedMessage); try { testprinthex(); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } }private static void printHex(byte[] bytes) { for (byte b : bytes) { System.out.printf(%02X , b); } System.out.println(); } } }1. 正确的原始消息: 上传失败企业唯一标识码验证不通过 2026-04-28 15:15:39.989 29708-29708 System.out com.bosd.javatest I Original UTF-8 Hex 2026-04-28 15:15:39.993 29708-29708 System.out com.bosd.javatest I E4 B8 8A E4 BC A0 E5 A4 B1 E8 B4 A5 EF BC 81 E4 BC 81 E4 B8 9A E5 94 AF E4 B8 80 E6 A0 87 E8 AF 86 E7 A0 81 E9 AA 8C E8 AF 81 E4 B8 8D E9 80 9A E8 BF 87 EF BC 81 2026-04-28 15:15:39.995 29708-29708 System.out com.bosd.javatest I After GBK Encode Utf-8 Hex 2026-04-28 15:15:40.000 29708-29708 System.out com.bosd.javatest I E4 B8 8A E4 BC A0 E5 A4 B1 E8 B4 A5 EF BC 81 E4 BC 81 E4 B8 9A E5 94 AF E4 B8 80 E6 A0 87 E8 AF 86 E7 A0 81 E9 AA 8C E8 AF 81 E4 B8 8D E9 80 9A E8 BF 87 EF BC 3F 2026-04-28 15:15:42.102 29708-29708 System.out com.bosd.javatest I €涓? 2026-04-28 15:15:43.054 29708-29708 System.out com.bosd.javatest I 2. 服务端错误解读后产生的乱码字符串: 涓婁紶澶辫触锛佷紒涓氬敮涓€鏍囪瘑鐮侀獙璇佷笉閫氳繃锛 2026-04-28 15:15:43.054 29708-29708 System.out com.bosd.javatest I 3. 最终发送给客户端的 UTF-8 字节 (十六进制): 2026-04-28 15:15:43.062 29708-29708 System.out com.bosd.javatest I E6 B6 93 E5 A9 81 E7 B4 B6 E6 BE B6 E8 BE AB E8 A7 A6 E9 94 9B E4 BD B7 E7 B4 92 E6 B6 93 E6 B0 AC E6 95 AE E6 B6 93 E2 82 AC E9 8F 8D E5 9B AA E7 98 91 E9 90 AE E4 BE 80 E7 8D 99 E7 92 87 E4 BD B7 E7 AC 89 E9 96 AB E6 B0 B3 E7 B9 83 E9 94 9B EF BF BD 2026-04-28 15:15:43.063 29708-29708 System.out com.bosd.javatest I 4. 客户端最终看到的内容: 涓婁紶澶辫触锛佷紒涓氬敮涓€鏍囪瘑鐮侀獙璇佷笉閫氳繃锛 2026-04-28 15:15:43.065 29708-29708 System.out com.bosd.javatest I 5. 修复后的消息: 上传失败企业唯一标识码验证不通过? 2026-04-28 15:15:43.069 29708-29708 System.out com.bosd.javatest I 构造的字节序列: E6 B6 93 E5 A9 81 E7 B4 B6 E6 BE B6 E8 BE AB E8 2026-04-28 15:15:43.071 29708-29708 System.out com.bosd.javatest I A7 A6 E9 94 9B E4 BD B7 E7 B4 92 E6 B6 93 E6 B0 2026-04-28 15:15:43.073 29708-29708 System.out com.bosd.javatest I AC E6 95 AE E9 94 9F E8 8A A5 E7 88 A3 E7 92 87 2026-04-28 15:15:43.075 29708-29708 System.out com.bosd.javatest I E5 97 99 E7 88 9C E6 A5 A0 E5 B2 83 E7 98 89 E6 2026-04-28 15:15:43.077 29708-29708 System.out com.bosd.javatest I B6 93 E5 B6 89 E2 82 AC E6 B0 B3 E7 B9 83 E9 94 2026-04-28 15:15:43.078 29708-29708 System.out com.bosd.javatest I 9B EF BF BD此时事件并没有结束我们只是证明了它用GBK重新编码了UTF-8的中文最后又把它转成UTF-8输出给客户端并没有完全实现好比是确定某人是杀人凶手却没有发现作案工具你说是刀口所至命的那是什么刀小李飞刀还是金丝大环刀呢? 无法在卷宗上结案啊需要继续探究。因为你会发现从信息上传失败企业唯一标识码验证不通过 到 上传失败企业唯??标识码验证不通过?? 没有一个完整性论证我的JAVA代码在中文还原时输出的是 上传失败企业唯一标识码验证不通过?,用了许多方式来调试来调整字符串的拼接也没用好气啊每天都在脑中重复这个过程我试着在头脑中解析这个GBK编码的方式直觉一直告诉我我的方法没有问题测试也没有问题但返回的结果就是不对返复在脑海里重现 解析 一字的 UTF-8编码E4 B8 80,E4 B8 用GBK来读就是涓 0x80GBK没有映射就应该是0xEFBFBD 替换符涓的UTF-8字节码E6 B6 93但Win java 这里却返回了 欧元符号€经过反复的思考后我觉得应该是Windows系统的问题然后我就找到原生Linux Java 平台再次运行我同样的JAVA代码结果不出所料的与我期望的结果一至了我得到了如下输出1. 正确的原始消息: 上传失败企业唯一标识码验证不通过 Original UTF-8 Hex E4 B8 8A E4 BC A0 E5 A4 B1 E8 B4 A5 EF BC 81 E4 BC 81 E4 B8 9A E5 94 AF E4 B8 80 E6 A0 87 E8 AF 86 E7 A0 81 E9 AA 8C E8 AF 81 E4 B8 8D E9 80 9A E8 BF 87 EF BC 81 After GBK Encode Utf-8 Hex E6 B6 93 E5 A9 81 E7 B4 B6 E6 BE B6 E8 BE AB E8 A7 A6 E9 94 9B E4 BD B7 E7 B4 92 E6 B6 93 E6 B0 AC E6 95 AE E6 B6 93 EF BF BD E9 8F 8D E5 9B AA E7 98 91 E9 90 AE E4 BE 80 E7 8D 99 E7 92 87 E4 BD B7 E7 AC 89 E9 96 AB E6 B0 B3 E7 B9 83 E9 94 9B EF BF BD 2. 服务端错误解读后产生的乱码字符串: 涓婁紶澶辫触锛佷紒涓氬敮涓鏍囪瘑鐮侀獙璇佷笉閫氳繃锛 3. 最终发送给客户端的 UTF-8 字节 (十六进制): E6 B6 93 E5 A9 81 E7 B4 B6 E6 BE B6 E8 BE AB E8 A7 A6 E9 94 9B E4 BD B7 E7 B4 92 E6 B6 93 E6 B0 AC E6 95 AE E6 B6 93 EF BF BD E9 8F 8D E5 9B AA E7 98 91 E9 90 AE E4 BE 80 E7 8D 99 E7 92 87 E4 BD B7 E7 AC 89 E9 96 AB E6 B0 B3 E7 B9 83 E9 94 9B EF BF BD 4. 客户端最终看到的内容: 涓婁紶澶辫触锛佷紒涓氬敮涓鏍囪瘑鐮侀獙璇佷笉閫氳繃锛这个结果让我觉得Windows 平台中GBK 编码中有微软自已的实现与扩充比如对于 80 就被映射到了€符号.... 标准JAVA GBK编码并没有这个设定它直接变成不可识别的标志字符串”EFBFBD“, 所以Webservice的平台是非Windows系统的java 标准 GBK 编码实现的真相大白了。这个编码策略的底层平台实现差异违背了 Java WORAWrite Once, Run Anywhere一次编写随处运行的理念微软画蛇添足。但是....第二天我时而翻来复去地在脑海里复现这个过程想来想去发现一个细思极恐的问题我的测试方法好像有问题因为我是在Android手机上运行的程序并没有在windows本身中运行java,那么我的结论还正确吗于是我又在Win 10上用命令行 编译了这段代码并在命令行中运行结果与上面是一至的是我错怪了Windows 冤枉了好人啊于是再用GB18030(国标严格的GBK标准)在手机上运行了一次这回的结果是对的了 说明是Android手机上的GBK有私自扩展将拉丁字符0x80映射过来了可但是 windows api /.net 原生app调用GBK编码的结果同样是被映射的它执行的CodePage936扩展行为也不算冤枉。//下面为android手机中的gbk解码器描述手机兼容了 cp936的行为。corruptedString new String(wrongGbkBytes,gbk); this {CharsetICU5219} icuCanonicalName windows-936-2000 这是android手机中的编码器名子 aliasSet {Collections$UnmodifiableSet5223} aliases [GBK, iso-ir-58, csISO58GB231280, csGB2312, chinese, MS936, GB_2312-80, GB2312, windows-936, CP936]GBK解码时是按双字节读取中文但utf-8是三字节表示中文所以反复编解码会产生字节丢失变成了\uFFFD就不能还原成原来的中文了。这是服务端的webservice错误编码中文所至所以我们客户端现在只能提示上传失败企业唯??标识码验证不通过?? ,哦不 我们手动替换一下吧 手动把错误信息修正.

相关新闻

2026年西安就业指导培训,这家公司的口碑为何这么好?

2026年西安就业指导培训,这家公司的口碑为何这么好?

随着就业市场日益竞争激烈,特别是对于新进入社会的大学毕业生而言,找工作变得越来越艰难。在这个背景下,陕西秦公政通教育咨询有限公司的就业指导培训脱颖而出,赢得了广泛好评。本文将从几个关键角度分析秦公教育为何能够如此受到…

2026/6/24 2:42:50阅读更多 →
Harness 教程 08:日志查看与故障排查:Execution History、Step Log、Delegate 日志与 Kubernetes 事件定位:国内网络环境落地版

Harness 教程 08:日志查看与故障排查:Execution History、Step Log、Delegate 日志与 Kubernetes 事件定位:国内网络环境落地版

一:教程定位在前 7 篇教程中,我们已经完成了 Harness 平台环境搭建、CI/CD 流水线、代码触发、测试与制品管理、Kubernetes 部署、变量参数化,以及审批和定时触发。从第 8 篇开始,我们重点解决一个初学者最容易遇到的问题&#xf…

2026/6/24 2:37:50阅读更多 →
Home Assistant Powercalc查找表策略:终极能耗监测解决方案

Home Assistant Powercalc查找表策略:终极能耗监测解决方案

Home Assistant Powercalc查找表策略:终极能耗监测解决方案 【免费下载链接】homeassistant-powercalc Home Assistant Custom component to calculate estimated power consumption of lights and other appliances 项目地址: https://gitcode.com/GitHub_Trendi…

2026/6/24 2:37:50阅读更多 →
【Linux】章4 归档和传输文件(RH134知识点问答题)

【Linux】章4 归档和传输文件(RH134知识点问答题)

1、tar 命令支持哪三种压缩方式?它们分别使用什么选项?答:gzip 压缩:-z,后缀:.tar.gz / .tgzbzip2 压缩:-j,后缀:.tar.bz2xz 压缩:-J,后缀&#x…

2026/6/24 3:52:53阅读更多 →
数字员工--前番

数字员工--前番

文章目录什么是数字员工一、流程型数字员工(最常用,无真人形象)核心能力常见岗位举例二、数字人型数字员工(有真人可视化形象)常见岗位举例三、数字员工核心特点四、和普通机器人客服、传统自动化的区别五、行业应用场…

2026/6/24 3:52:53阅读更多 →
AI 数据库优化:当机器学习遇见查询计划,内核级调优的实践路径

AI 数据库优化:当机器学习遇见查询计划,内核级调优的实践路径

AI 数据库优化:当机器学习遇见查询计划,内核级调优的实践路径 一、传统优化器的天花板:为什么统计信息总在撒谎 数据库查询优化器依赖统计信息做代价估算,但统计信息天然滞后。一次大批量导入后,表的行数估算可能偏差 …

2026/6/24 3:52:53阅读更多 →
计算机毕业设计之公司人员管理系统的设计与开发

计算机毕业设计之公司人员管理系统的设计与开发

人类现已迈入二十一世纪,科学技术日新月异,经济、资讯等各方面都有了非常大的进步,尤其是资讯与网络技术的飞速发展,对政治、经济、军事、文化等各方面都有了极大的影响。利用电脑网络的这些便利,发展一套公司人员管理…

2026/6/24 3:52:53阅读更多 →
《星光打字机》一、Timer使用指南

《星光打字机》一、Timer使用指南

【HarmonyOS】Timer(定时器)完全使用指南:从入门到实战适用版本:HarmonyOS / API 23 开发语言:ArkTS 开发工具:DevEco Studio 6.1 本文系统讲解 HarmonyOS 中 Timer(定时器)的核心 A…

2026/6/24 3:52:53阅读更多 →
存量RPA智能化改造指南:分阶段升级的技术落地顺序与企业架构重构实战

存量RPA智能化改造指南:分阶段升级的技术落地顺序与企业架构重构实战

摘要: 2026年,企业数字化转型已从“流程自动化”全面迈向“认知智能化”。 面对大量逻辑僵化、维护成本高昂的存量RPA,如何平滑实现智能化改造? 本文以资深架构师视角,拆解企业在存量RPA升级中面临的UI脆性、 数据孤岛…

2026/6/24 3:47:53阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/23 7:04:52阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/24 2:12:09阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/23 5:55:37阅读更多 →
TaskJuggler脚本编程入门:用代码实现自动化项目管理

TaskJuggler脚本编程入门:用代码实现自动化项目管理

TaskJuggler脚本编程入门:用代码实现自动化项目管理 【免费下载链接】TaskJuggler TaskJuggler - Project Management beyond Gantt chart drawing 项目地址: https://gitcode.com/gh_mirrors/ta/TaskJuggler TaskJuggler是一款强大的开源项目管理工具&#…

2026/6/24 0:02:41阅读更多 →
终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果

终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果

终极教程:使用angular-mobile-nav实现流畅的移动页面过渡效果 【免费下载链接】angular-mobile-nav An angular navigation service for mobile applications 项目地址: https://gitcode.com/gh_mirrors/an/angular-mobile-nav angular-mobile-nav是一款专为…

2026/6/24 0:02:41阅读更多 →
Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作

Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作

Wan2.1-Fun-V1.1-1.3B-InP Web UI使用教程:无需代码的AI视频创作 【免费下载链接】Wan2.1-Fun-V1.1-1.3B-InP 项目地址: https://ai.gitcode.com/hf_mirrors/PAI/Wan2.1-Fun-V1.1-1.3B-InP Wan2.1-Fun-V1.1-1.3B-InP是一款强大的AI视频创作工具,…

2026/6/24 0:02:41阅读更多 →