[openrtm-users 01133] Re: java版1.0RC1でのTimedStringでの日本語の取り扱いについて

Ando Noriaki n-ando @ aist.go.jp
2010年 2月 22日 (月) 18:56:51 JST


NECシステムテクノロジー 藤岡さま

安藤です

CORBA の string でも UTF-8を通すことはできるので、コンポーネントを
実行する java のコマンドラインオプションに以下のようにCORBAで使用する
キャラクタセットを指定してあげることで日本語を使えるようになるみたいです。

java -Dcom.sun.CORBA.codeset.charsets=0x05010001,0x00010109
-Dcom.sun.CORBA.codeset.wcharsets=0x00010109,0x05010001 YourComponent
-f rtc.conf

こちらでは、データポートでは試していませんが、サービスポートでは
日本語が通ることが確認できました。テストには、SimpleServiceを使用しました。

データポートについても、このコマンドラインオプションで
試してみていただけますでしょうか。

#ちなみに、このオプションを指定すると、こちらではRTSystemEditorが
#重くなる現象が現れました。

よろしくお願いいたします。



2010年2月22日14:43 Toshitaka Fujioka <fujioka-txa @ necst.nec.co.jp>:
> OpenRTM-aist開発者様、お世話になっております。
> NECシステムテクノロジーの藤岡と申します。
>
>
> OpenRTM-aist-Java-1.0.0-RC1.msi付属のサンプルソースConsoleInImpl.java、ConsoleOutImpl.java
> のポートのデータタイプを添付ファイルのようにTimedStringに変更しデータのやり取りをしたところ
> ascii文字は問題なく送受信できますが、日本語を送信しようとすると以下のようなエラーが表示され
> ます。
>
> java版のTimedString型ではC++・Python版のように日本語を取り扱うことは出来ないのでしょうか?
>
> ==================================================================
> Please input number:
> abcd
> Sending to subscriber: abcd
> Please input number:
> あいうえお
> Sending to subscriber: あいうえお
> 2010/02/22 14:17:11 com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConv
> erter convertCharArray
> 警告: "IOP02400001: (DATA_CONVERSION) Character does not map to negotiated trans
> mission code set"
> org.omg.CORBA.DATA_CONVERSION:   vmcid: OMG  minor code: 1  completed: No
>        at com.sun.corba.se.impl.logging.OMGSystemException.charNotInCodeset(Unk
> nown Source)
>        at com.sun.corba.se.impl.logging.OMGSystemException.charNotInCodeset(Unk
> nown Source)
>        at com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter.con
> vertCharArray(Unknown Source)
>        at com.sun.corba.se.impl.encoding.CodeSetConversion$JavaCTBConverter.con
> vert(Unknown Source)
>        at com.sun.corba.se.impl.encoding.CDROutputStream_1_0.writeString(Unknow
> n Source)
>        at com.sun.corba.se.impl.encoding.CDROutputStream_1_0.write_string(Unkno
> wn Source)
>        at com.sun.corba.se.impl.encoding.CDROutputStream.write_string(Unknown S
> ource)
>        at RTC.TimedStringHelper.write(Unknown Source)
>        at RTC.TimedStringHolder._write(Unknown Source)
>        at jp.go.aist.rtm.RTC.port.OutPort.write_stream(Unknown Source)
>        at jp.go.aist.rtm.RTC.port.OutPort.write(Unknown Source)
>        at jp.go.aist.rtm.RTC.port.OutPort.write(Unknown Source)
>        at RTMExamples.SimpleIO.ConsoleInImpl.onExecute(ConsoleInImpl.java:103)
>        at jp.go.aist.rtm.RTC.RTObject_impl.on_execute(Unknown Source)
>        at OpenRTM.DataFlowComponentPOA._invoke(Unknown Source)
>        at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispa
> tchToServant(Unknown Source)
>        at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispa
> tch(Unknown Source)
>        at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest
> Request(Unknown Source)
>        at com.sun.corba.se.impl.protocol.SharedCDRClientRequestDispatcherImpl.m
> arshalingComplete(Unknown Source)
>        at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(Unknown
>  Source)
>        at org.omg.CORBA.portable.ObjectImpl._invoke(Unknown Source)
>        at OpenRTM._DataFlowComponentStub.on_execute(Unknown Source)
>        at jp.go.aist.rtm.RTC.executionContext.PeriodicExecutionContext$DFP.on_e
> xecute(Unknown Source)
>        at jp.go.aist.rtm.RTC.executionContext.PeriodicExecutionContext$DFPBase$
> onExecute.doAction(Unknown Source)
>        at jp.go.aist.rtm.RTC.StateMachine.worker(Unknown Source)
>        at jp.go.aist.rtm.RTC.executionContext.PeriodicExecutionContext$DFPBase.
> worker(Unknown Source)
>        at jp.go.aist.rtm.RTC.executionContext.PeriodicExecutionContext$Comp.inv
> oke(Unknown Source)
>        at jp.go.aist.rtm.RTC.executionContext.PeriodicExecutionContext.svc(Unkn
> own Source)
>        at jp.go.aist.rtm.RTC.executionContext.PeriodicExecutionContext.run(Unkn
> own Source)
>        at java.lang.Thread.run(Unknown Source)
> Caused by: java.nio.charset.UnmappableCharacterException: Input length = 1
>        at java.nio.charset.CoderResult.throwException(Unknown Source)
>        at java.nio.charset.CharsetEncoder.encode(Unknown Source)
>        ... 28 more
> =================================================================================
>
>
> 以上です、よろしくお願いいたします。
> 失礼いたします。
>
> --
> NECシステムテクノロジー(株)
> プラットフォーム事業本部 エンベデッドソフトウェア事業部
> ウインドウズ エンベデッド ソリューション センター
> 藤岡 俊考 fujioka-txa @ necst.nec.co.jp
> tel: 078-991-5580 telnet: 8-73-73869
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門
    統合知能研究グループ 主任研究員, 博士(工学)
    〒305-8568 つくば市梅園1-1-1 中央第2
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org

Noriaki Ando, Ph.D.
    Senior Research Scientist, RT-Synthesis R.G., ISRI, AIST
    AIST Tsukuba Central 2, Tsukuba, Ibaraki 305-8568 JAPAN
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org



openrtm-users メーリングリストの案内