- ベストアンサー
libHaruJNIでおこる文字化けについて
- 現在、libHaruを使ってjavaからPDFを出力するプログラムを組んでいますが、文字化けが起きて困っています。
- javaからC言語側に日本語文字列を送り、PDFに出力すると文字化けが発生しています。
- 解決方法が分からず、日本語設定は正しく行われていることも確認しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>いくつか方法は試したのですが、どれもC++なら問題なく動作するのですが、C言語だとAPIが制約されてしまい変換方法が限られてしまうのです。 「変換方法が限られてしまう」ということは少なくとも変換方法はあるわけですよね。変換できるのならAPIが何であろうが問題ないのでは? それとも「変換方法が限られてしまう」というのは「C言語で使用できる文字コード変換関数やAPIを知らない。」の意味なんでしょうか。 とりあえずプラットフォームがunix系ならiconvがあると思いますし、Windows系ならCでも使えるAPIがあります(具体的なAPIはお調べください) >eclipseから確認するにはどうしたらいいんでしょうか。 char aiueo[]="あいうえお"; とでもすればaiueoの各要素の値から推測できると思いますが。
その他の回答 (2)
- salsberry
- ベストアンサー率69% (495/711)
> C言語内でUTF-8からShift_JISに変換する方法が分からなくて困っております。 だったら、Javaコード側でShift_JISに変換してからJNIメソッドに渡せばいいのでは? WriteStr()の引数の型は当然Stringからbyte[]に変更することになりますが。
- wormhole
- ベストアンサー率28% (1626/5665)
>恐らくはjava⇒Cの段階ではUTF-8でやり取りされているのに、PDFではS-JISとして書きだされるからだと思いますが、解決方法が分かりません。 libHaruがShift_JISの文字列を要求するのであれば文字列をUTF-8からShift_JISに変換すればいいだけでは? >//直接”あいうえお”などを打ち込むと化けない 「直接”あいうえお”」と書かれても(コンパイル後の)文字コードが何になってるのかわからないんですが・・・
補足
ご返信ありがとうございます。 すみません。情報が足りていませんでした。 >Shift_JISに変換すればいいだけでは? libHaruはC言語で書かれているのですが、C言語内でUTF-8からShift_JISに変換する方法が分からなくて困っております。いくつか方法は試したのですが、どれもC++なら問題なく動作するのですが、C言語だとAPIが制約されてしまい変換方法が限られてしまうのです。 >(コンパイル後の)文字コードが何になってるのかわからないんですが・・・ すみません。この辺りに疎いので詳しくは分からないのです。出力したら文字化けしたので恐らくUnicodeに置き換わっているのかな?と思ったんですが、eclipseから確認するにはどうしたらいいんでしょうか。
お礼
ご返信ありがとうございます。 iconvで調べてみたらかなりよさそうですね。取りあえずこれを使ってみようと思います。 ありがとうございました。