• 締切済み

HP-UXでの文字コード変換方法

非常に困ってます。どなたかご存知の方、ご教授下さい。m(_ _)m あるPPが出力するログファイルがあり、そのログには UTF-8とSJISのコードが含まれている事が分かりました。 このファイルをSJISに変換したいのですが、iconvコマンドを使用すると(iconv -f utf8 -t sjis)、UTF-8の 箇所は問題なく、変換できますがSJISが混入している箇所で、エラーとなります。 「上記コマンド例では、"UTF-8"を"SJIS"に変換して!」という意味で、変換元にUTF-8ではない"SJIS"が 入っていると、その箇所で、エラーになるようです。 同一の要件を、Linuxでも実装する必要があります。 Linuxでは、iconv以外にも"kcc"という便利なコマンドが用意されているようで、"kcc -s"と実行すると 元ファイルにUTF-8であろうがSJISであろうが、何のコードが入っていても、自動判別して指定したコードに 変換してくれうようです。 と、いう訳でHP-UXでのコード変換に非常に困っています。どなたか、同じ事で悩まれた経験がある方、 知識豊富で、対象方法をご存知の方、 助けてください。。。m(_ _)m

みんなの回答

回答No.2

こんにちは。 nkfの最新バージョンを入れることは出来ませんか? モジュールだけならたくさん落ちてますよ。 (^^ゞ

minoru11
質問者

お礼

ご回答有難うございます。m(_ _)m アドバイス頂いた通り、現在開発元に nkf等のツールのインストールが可能か確認中です。

回答No.1

こんにちは。 難しいですね・・・。 1.-cオプションを使う(多分ないかな?) 2.nkfコマンドもutf-8に対応するようになってますが、それを使ってみる。 これでダメなら・・・ゴリゴリ書く??? (^^ゞ

minoru11
質問者

補足

早速のご回答有難うございました! >1.-cオプションを使う(多分ないかな?)   →これに関しては、無さげでした。。。(^^;) >2.nkfコマンドもutf-8に対応するようになってます>が、それを使ってみる。 →これに関しても、何故かLinuxには用意されてい   るのに、HP-UXには無いようです。。。(T T) >これでダメなら・・・ゴリゴリ書く??? >(^^ゞ →やっぱり、それしか無いんですかね~(T T) Cとか全くできないので、(シェルぐらいしか・・) 何とか避けたかったんですが。。。

関連するQ&A

  • 文字コード変換時の文字化けについて

    HP-UX上で、文字コードUTF8のファイルをiconvにてSJISに変換して利用しています。 その際、¥(全角円マーク)、―(全角ダッシュ)、‐(全角ハイフン) などが文字化けしてしまいます。 shell内にて処理できればよいので、iconvでなくても結構ですが、文字化けしない方法をご存じ方がいらっしゃれば教えていただけると幸いです。 よろしくおねがいいたします。

  • gccでiconvを使った文字コード変換で文字化け?

    Linuxでgccを使ってプログラムを作っていますが、文字コード変換が一部分うまくいかなくて困ってます。 Shift-JISで作られたテキストファイルから一行ずつ文字を読み込んで、 それをUTF-8に変換して画面に出力しているんですが、 「神石高原町」だけ文字化けしているのか、表示されません。 前後の行は表示されるのでちょうど1行空白になる感じです。 とりあえず変換用に作った関数。 BOOL SJIStoUTF( char* pin, // (IN) 変換元文字列 char* pout, // (OUT) 変換後文字列格納領域 size_t olen) // (IN) 変換後文字列格納領域サイズ { iconv_t cd; size_t ilen, rlen; cd = iconv_open( "UTF-8", "SJIS-WIN" ); ilen = strlen( pin ); rlen = iconv(cd, &pin, &ilen, &pout, &olen ); if( rlen == -1 ){ printf( "ERROR in S2U (%s)\n", pin ); return FALSE; } *pout = '\0'; iconv_close( cd ); return TRUE; } この関数に「神石高原町」を与えて返ってきた文字をファイルに出力して、 秀丸の文字コードUTF-8で開くと変換できなかった文字が「神」の前にあり、文字も「神石高原」になるし・・・。 Linuxのコンソール上でiconvのコマンド使ってファイルごと変換すれば 文字化けしないんですけど、 gccでiconv使うときは気をつけなきゃだめなことがあるんでしょうか? なんでこうなるのかわかる方がいたら教えてください。

  • シェルスクリプトで文字コード変換

    Linuxをつかいシェルスクリプトを組んでいます AAA.csvというファイルをBBB.csvにリネームしたいと思っています。 ただリネームするだけであれば以下で出来ると思うのですが、 mv .AAA.csv BBB.csv 文字コードを変換したいのでiconvをしたいとおもっています。 (環境的にnkf等は使えませんでした) 以下のようにすれば目的は達成できるのですが あまりキレイな書き方ではないのでもう少しなんとかならないかと考えています。 iconv -f utf8 -t sjis AAA.csv > BBB.csv rm -f AAA.csv 複数のコマンドを組み合わせてキレイにできるのであれば、どなたかご助言お願い致します。

  • 文字コードの変換方法

    お世話になります。 サーバ上で生成した、文字コードがEUCのテキストファイルをSJISに文字コードを変換したいのですが、nkfコマンドが使用できません。 nkfコマンドを使用せず、EUC⇒SJISへ文字コードを変換する方法をご教示頂けますでしょうか。 また文字コードを変更すれば改行コードの変更はしなくてもいいのでしょうか。 宜しくお願い致します。

  • ファイルの文字コードの変換方法

    ファイルの文字コードを効率よく変換する方法を教えてください。 SJISのファイルをutf-8に変換したいんですが、 例えば対象のファイルを秀丸で開いて、utf-8で保存すれば変換できますが、ファイルが100個以上あるのでひとつひとつやっていっては時間がかかってしまいます。 よい方法やツールがありましたら教えてください。 よろしくお願いします。

  • 文字コード変換の件( nkf -w8 と iconv )

    nkfでのオプション:w8に該当するiconvのパラメータをご存知のかたは教えていただきたいと思います。 nkf -w8での変換結果はファイル先頭3バイトにiconvでの変換結果と異なるコードが付いているようです。 iconvにて次のパラメータは試しましたが、いずれもファイル先頭3バイトが nkf -w8の結果とは異なっています。 UTF-8 UTF-16 UTF-16BE UTF-16LE UNICODE なお、versionなどは関係ないとは思いますがfedora-10-preview環境です。

  • ファイルコードの変換の問題

    現在、shift-jis ファイルをUTF-8に変換するところです。 使っているソフトはGNU の iconvです。バージョン1.10です。 iconv -f SHIFT_JIS -t UTF-8 a.txt > b.txt で文字コードが変換されていない 詳しい方が教えていただけないでしょうか

  • 現在の文字コードの確認

    お世話になります。 以下のシェルスクリプトでテキストファイルの文字コードをUTF8に変換したあと、 返還後の文字コードを確認するステップを追加したいと考えています。 ------------------------------------- #!/bin/sh for f in `ls *.txt` do iconv -f SJIS -t UTF8 < $f > utf8-$f done ------------------------------------- 次のようなスクリプトを作成しましたが正常に処理が行われませんでした。 どのように記述すればよいでしょうか。 ------------------------------------- #!/bin/sh for f in `ls *.txt` do iconv -f SJIS -t UTF8 < $f > utf8-$f nkf -g < $f > done ------------------------------------- ご協力のほどよろしくお願いいたします。

  • PHPの文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP
  • HP-UXにてiconv変換できません。

    いつもお世話になっています。 当方、C言語初心者です。 環境 HP-UX 11.23 言語 C言語 他システムより接続された漢字コードに制御コードを付与し、JISコードに変更後、 JIS→SJISに変換するツールを開発しています。 たとえば 他システムより 0x3E3E 0x3B33(コードを調べると〔松山〕でした) 前後に制御コード付与すると 0x1B 0x24 0x42 0x3E3E 0x3B33 0x1B 0x28 0x4A JISで松山になります。 エディタで上記コードを読み込むと松山と表示されました。 ところが上記のJISを下記内容で実行させると、 入力値のコードがなんの変換もされず返却されました。 どこに不具合があって入力の内容(cvbuf)が出力の内容(ebuf)にそのまま返却されているのか調べることができませんでした。 何か見落としがあればご指摘のほど、宜しくお願い致します。 ※rlenをprintfしたところ正常返却されています。 ======================================================================= 呼び元は  cvkanj(0x3E3E 0x3B33の内容が入ったアドレス,2)  みないな感じです。 char *cvkanj(s, len) char *s; int *len; { char cvbuf[32768]; int rcd; staric char ebuf[32768] = {0}; static char ki[4] = { 0x1b, 0x24, 0x42, 0x00}; static char ko[4] = { 0x1b, 0x28, 0x4a, 0x00}; memcpy( cvbuf, ki, 3); memcpy( &cvbuf[3], s, len) memcpy( &cvbuf[len+3], ko, 3); cvbuf[len+6] = 0x00; rcd = convt(cvbuf, ebuf); return(&ebuf[0]); } int convt(pin, pout) char *pin; char *pout { iconv_t cd; size_t ilen; size_t olen; size_t rlen; ilen=strlen(pin); olen=32768; if ((cd = iconv_open("jis","sjis")) == (iconv_t)-1){ exit(-1); } rlen = iconv(cd, &pin, &ilen, &pout, &olen); iconv_close; return(0); }