• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:libHaruJNIでおこる文字化けについて)

libHaruJNIでおこる文字化けについて

このQ&Aのポイント
  • 現在、libHaruを使ってjavaからPDFを出力するプログラムを組んでいますが、文字化けが起きて困っています。
  • javaからC言語側に日本語文字列を送り、PDFに出力すると文字化けが発生しています。
  • 解決方法が分からず、日本語設定は正しく行われていることも確認しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

>いくつか方法は試したのですが、どれもC++なら問題なく動作するのですが、C言語だとAPIが制約されてしまい変換方法が限られてしまうのです。 「変換方法が限られてしまう」ということは少なくとも変換方法はあるわけですよね。変換できるのならAPIが何であろうが問題ないのでは? それとも「変換方法が限られてしまう」というのは「C言語で使用できる文字コード変換関数やAPIを知らない。」の意味なんでしょうか。 とりあえずプラットフォームがunix系ならiconvがあると思いますし、Windows系ならCでも使えるAPIがあります(具体的なAPIはお調べください) >eclipseから確認するにはどうしたらいいんでしょうか。 char aiueo[]="あいうえお"; とでもすればaiueoの各要素の値から推測できると思いますが。

icomic
質問者

お礼

ご返信ありがとうございます。 iconvで調べてみたらかなりよさそうですね。取りあえずこれを使ってみようと思います。 ありがとうございました。

その他の回答 (2)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

> C言語内でUTF-8からShift_JISに変換する方法が分からなくて困っております。 だったら、Javaコード側でShift_JISに変換してからJNIメソッドに渡せばいいのでは? WriteStr()の引数の型は当然Stringからbyte[]に変更することになりますが。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>恐らくはjava⇒Cの段階ではUTF-8でやり取りされているのに、PDFではS-JISとして書きだされるからだと思いますが、解決方法が分かりません。 libHaruがShift_JISの文字列を要求するのであれば文字列をUTF-8からShift_JISに変換すればいいだけでは? >//直接”あいうえお”などを打ち込むと化けない 「直接”あいうえお”」と書かれても(コンパイル後の)文字コードが何になってるのかわからないんですが・・・

icomic
質問者

補足

ご返信ありがとうございます。 すみません。情報が足りていませんでした。 >Shift_JISに変換すればいいだけでは? libHaruはC言語で書かれているのですが、C言語内でUTF-8からShift_JISに変換する方法が分からなくて困っております。いくつか方法は試したのですが、どれもC++なら問題なく動作するのですが、C言語だとAPIが制約されてしまい変換方法が限られてしまうのです。 >(コンパイル後の)文字コードが何になってるのかわからないんですが・・・ すみません。この辺りに疎いので詳しくは分からないのです。出力したら文字化けしたので恐らくUnicodeに置き換わっているのかな?と思ったんですが、eclipseから確認するにはどうしたらいいんでしょうか。