Corba传值包含中文解决
分布式系统中,如果两个系统使用corba进行传值,一般来说服务器没有进行相应的特殊配置,传非中文是没有问题的,如果传输的参数中包含中文,那么就会报如下错误:
- com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter convertCharArray
- 警告: "IOP02400001: (DATA_CONVERSION) Character does not map to negotiated transmission code set"
- org.omg.CORBA.DATA_CONVERSION: vmcid: OMG minor code: 1 completed: No
后来在网上搜了搜,看见一个哥们说需要这么做:
- java.util.Properties p = new java.util.Properties();
- p.setProperty("com.sun.CORBA.codeset.charsets", "0x05010001, 0x00010109"); // UTF-8, UTF-16
- p.setProperty("com.sun.CORBA.codeset.wcharsets", "0x00010109, 0x05010001"); // UTF-16, UTF-8
- 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的传输过程中存在着中文,对其进行相应的转码即可。异常堆栈的提示信息如下:
- com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter convertCharArray
- 警告: "IOP02400001: (DATA_CONVERSION) Character does not map to negotiated transmission code set"
- org.omg.CORBA.DATA_CONVERSION: vmcid: OMG minor code: 1 completed: No
- at com.sun.corba.se.impl.logging.OMGSystemException.charNotInCodeset(OMGSystemException.java:2093)
- at com.sun.corba.se.impl.logging.OMGSystemException.charNotInCodeset(OMGSystemException.java:2111)
- at com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter.convertCharArray(CodeSetConversion.java:259)
- at com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter.convert(CodeSetConversion.java:206)
- at com.sun.corba.se.impl.encoding.CDROutputStream_1_0.writeString(CDROutputStream_1_0.java:478)
- at com.sun.corba.se.impl.encoding.CDROutputStream_1_0.write_string(CDROutputStream_1_0.java:467)
- at com.sun.corba.se.impl.encoding.CDROutputStream.write_string(CDROutputStream.java:153)
- at corba.ElementHelper.write(ElementHelper.java:346)
- at corba.ElementListHelper.write(ElementListHelper.java:61)
- at RemoteDB.dataSourcePOA._invoke(dataSourcePOA.java:648)
- at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:637)
- at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:189)
- at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1680)
- at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1540)
- at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:922)
- at com.sun.corba.se.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:181)
- at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:694)
- at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:451)
- at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1187)
- at com.sun.corba.se.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:398)
- Caused by: java.nio.charset.UnmappableCharacterException: Input length = 1
- at java.nio.charset.CoderResult.throwException(CoderResult.java:261)
- at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:781)
- at com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter.convertCharArray(CodeSetConversion.java:244)
- ... 17 more
根据idl生成的文件查看属性是否包含中文,对该字段进行转码即可,^_^。
转载于:https://blog.51cto.com/rempor/790953
Corba传值包含中文解决相关推荐
- 解决URL传值包含中文时乱码的问题
1.前言 很多时候我们需要利用URL进行传值,当其中的参数值为中文时,接收端可能会产生乱码问题,下面就来说明一下如何解决这个问题. 2.接收URL参数值 定义index.html,添加一个按钮,点击该 ...
- JS中页面跳转,传值包含中文时乱码解决方案
首先,在JS中将要传递的中文编码:encodeURI(encodeURI(value)): 然后在跳转界面中取值时通过以下方式解码:java.net.URLDecoder.decode(value , ...
- 解决JS在url中传递参数时参数包含中文乱码的问题
解决JS在url中传递参数时参数包含中文乱码的问题 参考文章: (1)解决JS在url中传递参数时参数包含中文乱码的问题 (2)https://www.cnblogs.com/xushengguan/ ...
- python解决open()函数、xlrd.open_workbook()函数文件名包含中文,sheet名包含中文报错的问题
python解决open()函数.xlrd.open_workbook()函数文件名包含中文,sheet名包含中文报错的问题 参考文章: (1)python解决open()函数.xlrd.open_w ...
- servlet中访问mysql无法包含中文的解决
最近写servlet应用发现,如果我的sql语句中包含英文,访问数据库就失败,而我数据库的编码是utf8 -- UTF-8 Unicode,而我servlet的字符也已经转为UTF-8 ,还是不行. ...
- python中xlrd.open_workbook_python解决open()函数、xlrd.open_workbook()函数文件名包含中文,sheet名包含中文报错的问题...
问题现象: 1.使用open()函数.xlrd.open_workbook()函数打开文件,文件名若包含中文,会报错找不到这个文件或目录. 2.获取sheet时若包含中文,也会报错. #打开文件 fi ...
- java.net.url 中文乱码_asp.net URL中包含中文参数造成乱码的解决方法
asp.net URL中包含中文参数造成乱码的解决方法 更新时间:2010年03月08日 21:44:27 作者: 中文乱码一直以来是WEB开发中比较常见的问题之一,对于初学者来说,各种各样的编码 ...
- 如何解决Bat脚本中包含中文,运行乱码
如何解决Bat脚本中包含中文,运行乱码 转载于:https://jingyan.baidu.com/article/a3f121e4d84a5dfc9152bb55.html bat脚本在批处理的时候 ...
- 将Win10包含中文的用户名改为英文的,解决Anaconda navigator无法运行jupyter的问题
Win10用户名包含中文字符导致无法在Anaconda navigator直接运行jupyter的问题 本篇文章内容包含: WIN10如何修改"C:\Users\用户名"中的用户名 ...
最新文章
- iOS-直播开发(开发从底层做起)
- 2020年服务器操作系统占有率,服务器操作系统占有率
- [综合面试] 大牛的面试神级总结之总结篇
- 为了使界面组件更圆滑,Swing,且跨系统
- php 比较2个数组,比较2个数组中的2个数组值Php
- python - work3
- CVPR 2021 前景背景分开建模,UCLA 视觉研究组提出用于视频预测的动态语义模型...
- java opencv 读取视频_java使用OpenCV从视频文件中获取帧
- MySQL深入02-DML之Select查询
- git代码上传详细步骤(初学者操作)
- UWP 禁止Pivot swip 手势
- ...startWebLogic.sh: line 202:21293 已杀死
- 叮,一份详细的LIN收发器选型指南请查收
- 有关宾大1900页数学书笔记的更新说明
- 视频直播之webp礼物解决方案
- 20分钟配置 让Win8 DP与Win7和平共存
- 软件测试案例|Python+Selenium+unittest完成对登录页面的自动化测试
- win10关闭自带键盘(亲测有用)
- 不登QQ时就不启动腾讯QPCore服务
- 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~21开始游戏-商店NPC
热门文章
- Shell Scipt 命令行带参数,输出log
- 一种无限循环轮播图的实现原理
- 一步步学习SPD2010--第九章节--使用可重用工作流和工作流表单(1)--创建和使用可重用工作流...
- 【转】Burp Suite详细使用教程-Intruder模块详解
- C#可以对系统服务 检查增加删除启动停止重启(转)
- Django项目部署到Linux后,上传文件的时候,mkdirs创建目录OSError - Errno 13 Permission denied
- Redis集成到Maven工程(Jedis客户端)
- kafka消费者源码解析
- linux安装两个jdk_jdk在linux上安装过程
- 济南计算机学校排名2015,济南高中排名前十名有哪些