分布式系统中,如果两个系统使用corba进行传值,一般来说服务器没有进行相应的特殊配置,传非中文是没有问题的,如果传输的参数中包含中文,那么就会报如下错误:

  1. com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter convertCharArray
  2. 警告: "IOP02400001: (DATA_CONVERSION) Character does not map to negotiated transmission code set"
  3. org.omg.CORBA.DATA_CONVERSION: vmcid: OMG minor code: 1 completed: No

后来在网上搜了搜,看见一个哥们说需要这么做:

  1. java.util.Properties p = new java.util.Properties();
  2. p.setProperty("com.sun.CORBA.codeset.charsets", "0x05010001, 0x00010109"); // UTF-8, UTF-16
  3. p.setProperty("com.sun.CORBA.codeset.wcharsets", "0x00010109, 0x05010001"); // UTF-16, UTF-8
  4. orb = org.omg.CORBA_2_3.ORB.init(args, p);

ALSO, for the ORB on the server side (OmniOrb) I also had to change the native code set from ISO-8859-1 to UTF-8, else the two would get together and negotiate themselves into talking ISO-8859-1.

Now everything seems to be working fine.

其实上面主要就是说进行转码的操作,以及设置服务器上面支持的语言,但是我愣是看的不是很爽,答案不明了呀!其实解决方法很简单,只要仔细看下错误,异常的堆栈中会告诉你你操作那个一个属性的时候出现了异常,也就表示这个属性在corba的传输过程中存在着中文,对其进行相应的转码即可。异常堆栈的提示信息如下:

  1. com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter convertCharArray
  2. 警告: "IOP02400001: (DATA_CONVERSION) Character does not map to negotiated transmission code set"
  3. org.omg.CORBA.DATA_CONVERSION: vmcid: OMG minor code: 1 completed: No
  4. at com.sun.corba.se.impl.logging.OMGSystemException.charNotInCodeset(OMGSystemException.java:2093)
  5. at com.sun.corba.se.impl.logging.OMGSystemException.charNotInCodeset(OMGSystemException.java:2111)
  6. at com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter.convertCharArray(CodeSetConversion.java:259)
  7. at com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter.convert(CodeSetConversion.java:206)
  8. at com.sun.corba.se.impl.encoding.CDROutputStream_1_0.writeString(CDROutputStream_1_0.java:478)
  9. at com.sun.corba.se.impl.encoding.CDROutputStream_1_0.write_string(CDROutputStream_1_0.java:467)
  10. at com.sun.corba.se.impl.encoding.CDROutputStream.write_string(CDROutputStream.java:153)
  11. at corba.ElementHelper.write(ElementHelper.java:346)
  12. at corba.ElementListHelper.write(ElementListHelper.java:61)
  13. at RemoteDB.dataSourcePOA._invoke(dataSourcePOA.java:648)
  14. at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:637)
  15. at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:189)
  16. at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1680)
  17. at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1540)
  18. at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:922)
  19. at com.sun.corba.se.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:181)
  20. at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:694)
  21. at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:451)
  22. at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1187)
  23. at com.sun.corba.se.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:398)
  24. Caused by: java.nio.charset.UnmappableCharacterException: Input length = 1
  25. at java.nio.charset.CoderResult.throwException(CoderResult.java:261)
  26. at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:781)
  27. at com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter.convertCharArray(CodeSetConversion.java:244)
  28. ... 17 more

根据idl生成的文件查看属性是否包含中文,对该字段进行转码即可,^_^。

 

转载于:https://blog.51cto.com/rempor/790953

Corba传值包含中文解决相关推荐

  1. 解决URL传值包含中文时乱码的问题

    1.前言 很多时候我们需要利用URL进行传值,当其中的参数值为中文时,接收端可能会产生乱码问题,下面就来说明一下如何解决这个问题. 2.接收URL参数值 定义index.html,添加一个按钮,点击该 ...

  2. JS中页面跳转,传值包含中文时乱码解决方案

    首先,在JS中将要传递的中文编码:encodeURI(encodeURI(value)): 然后在跳转界面中取值时通过以下方式解码:java.net.URLDecoder.decode(value , ...

  3. 解决JS在url中传递参数时参数包含中文乱码的问题

    解决JS在url中传递参数时参数包含中文乱码的问题 参考文章: (1)解决JS在url中传递参数时参数包含中文乱码的问题 (2)https://www.cnblogs.com/xushengguan/ ...

  4. python解决open()函数、xlrd.open_workbook()函数文件名包含中文,sheet名包含中文报错的问题

    python解决open()函数.xlrd.open_workbook()函数文件名包含中文,sheet名包含中文报错的问题 参考文章: (1)python解决open()函数.xlrd.open_w ...

  5. servlet中访问mysql无法包含中文的解决

    最近写servlet应用发现,如果我的sql语句中包含英文,访问数据库就失败,而我数据库的编码是utf8 -- UTF-8 Unicode,而我servlet的字符也已经转为UTF-8 ,还是不行. ...

  6. python中xlrd.open_workbook_python解决open()函数、xlrd.open_workbook()函数文件名包含中文,sheet名包含中文报错的问题...

    问题现象: 1.使用open()函数.xlrd.open_workbook()函数打开文件,文件名若包含中文,会报错找不到这个文件或目录. 2.获取sheet时若包含中文,也会报错. #打开文件 fi ...

  7. java.net.url 中文乱码_asp.net URL中包含中文参数造成乱码的解决方法

    asp.net URL中包含中文参数造成乱码的解决方法 更新时间:2010年03月08日 21:44:27   作者: 中文乱码一直以来是WEB开发中比较常见的问题之一,对于初学者来说,各种各样的编码 ...

  8. 如何解决Bat脚本中包含中文,运行乱码

    如何解决Bat脚本中包含中文,运行乱码 转载于:https://jingyan.baidu.com/article/a3f121e4d84a5dfc9152bb55.html bat脚本在批处理的时候 ...

  9. 将Win10包含中文的用户名改为英文的,解决Anaconda navigator无法运行jupyter的问题

    Win10用户名包含中文字符导致无法在Anaconda navigator直接运行jupyter的问题 本篇文章内容包含: WIN10如何修改"C:\Users\用户名"中的用户名 ...

最新文章

  1. iOS-直播开发(开发从底层做起)
  2. 2020年服务器操作系统占有率,服务器操作系统占有率
  3. [综合面试] 大牛的面试神级总结之总结篇
  4. 为了使界面组件更圆滑,Swing,且跨系统
  5. php 比较2个数组,比较2个数组中的2个数组值Php
  6. python - work3
  7. CVPR 2021 前景背景分开建模,UCLA 视觉研究组提出用于视频预测的动态语义模型...
  8. java opencv 读取视频_java使用OpenCV从视频文件中获取帧
  9. MySQL深入02-DML之Select查询
  10. git代码上传详细步骤(初学者操作)
  11. UWP 禁止Pivot swip 手势
  12. ...startWebLogic.sh: line 202:21293 已杀死
  13. 叮,一份详细的LIN收发器选型指南请查收
  14. 有关宾大1900页数学书笔记的更新说明
  15. 视频直播之webp礼物解决方案
  16. 20分钟配置 让Win8 DP与Win7和平共存
  17. 软件测试案例|Python+Selenium+unittest完成对登录页面的自动化测试
  18. win10关闭自带键盘(亲测有用)
  19. 不登QQ时就不启动腾讯QPCore服务
  20. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~21开始游戏-商店NPC

热门文章

  1. Shell Scipt 命令行带参数,输出log
  2. 一种无限循环轮播图的实现原理
  3. 一步步学习SPD2010--第九章节--使用可重用工作流和工作流表单(1)--创建和使用可重用工作流...
  4. 【转】Burp Suite详细使用教程-Intruder模块详解
  5. C#可以对系统服务 检查增加删除启动停止重启(转)
  6. Django项目部署到Linux后,上传文件的时候,mkdirs创建目录OSError - Errno 13 Permission denied
  7. Redis集成到Maven工程(Jedis客户端)
  8. kafka消费者源码解析
  9. linux安装两个jdk_jdk在linux上安装过程
  10. 济南计算机学校排名2015,济南高中排名前十名有哪些