• ベストアンサー

diffコマンドでのjisとsjisの漢字項目の扱いについて

HP-UXで使用文字コードをsjisで設定しています。 漢字項目を含むsjisで作成したファイルと、 同内容のjisで作成したファイルをdiffコマンドで比較した場合、 jisの漢字項目にエスケープシーケンスがつくと思っているのですが、相違点として表示されるのでしょうか? また、このjisで作成されたファイルをcpコマンド等で、 別ファイルにした場合にsjisのファイルになるのでしょうか? 仮にsjisとなった場合に、漢字のエスケープシーケンスはどのような扱いになるのでしょうか? (現在、近くに環境がなく確認できませんので、この場を借りて質問致しました。)

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4854/10269)
回答No.2

>HP-UXで使用文字コードをsjisで設定しています。 これはおそらく、端末の扱う漢字コードがsjisであると環境変数に設定したということだと思います。 日本語のメッセージはコマンドからsjisコードで出てくると思うので、sjisに設定した端末から使うとうまく読めるし、euc-jisに設定した端末から使うと文字化けします。 >また、このjisで作成されたファイルをcpコマンド等で、 >別ファイルにした場合にsjisのファイルになるのでしょうか? 端末に結果を表示するコマンド以外には関係しませんので、cpコマンドは純粋にコピーだけを行います。漢字コード変換コマンドはiconvだったはず。 >漢字項目を含むsjisで作成したファイルと、 >同内容のjisで作成したファイルをdiffコマンドで比較した場合、 >jisの漢字項目にエスケープシーケンスがつくと思っているのですが、相違点として表示されるのでしょうか? HP-UXのdiffコマンドを使ったことはありませんが、おそらく異なった漢字コードのファイルを比較すると漢字コード部分が全部不一致で出てくると思いますので、最初にiconvコマンドでjisコードのファイルをsjisコードに変換してからsjis同士で比較すればいいと思います。

kiyoto
質問者

お礼

お礼が遅くなり申し訳ありませんでした。 参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

同じく環境がなくて試せませんが、過去の経験や知識からの推測です。(昔、hp-uxも使った事はあります) diffは行単位で単純に内容を比較するだけですから、 内容が異なればそれをそのまま表示するでしょう。 漢字コードはおそらく意識せず動作しているでしょう。 cpはファイルをコピーするだけですから、漢字コードが変わることはまず無いでしょう。 通常、漢字コードを変換する場合はなんらかの専用のコマンドがあります。 この辺の基本的なコマンドはどのunix系OSでも変わらないと思いますので, Linuxでもcygwinでも使って確かめてみては?

kiyoto
質問者

お礼

お礼が遅くなり申し訳ありませんでした。 参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SJIS→JIS漢字コード変換の制御コマンドの扱い

    JIS→SJISへの変換の際に、制御コマンドとして <ESC>$Bや<ESC>(Bが入っている事で漢字かそうでないかの 判断ができますが、 逆にSJIS→JISへの変換の際に、制御コマンドはどのようにして 埋め込む事が出来るのでしょうか? fprintf(fp,"?",0x1b,0x24,0x42); ?にはどういれたらよいのでしょう? %cだと表示されてしまいますし・・

  • UNIXのdiffコマンドについて

    UNIXのdiffコマンドは、ファイルを比較するときに同じテキストであっても時々は違っていると出力されるケースがあると聞きましたが、詳しく内容をご存じの方教示願います。(OS[solaris,HP-UX,AIX,Linux]の違いにも関係があるようですが?)

  • JIS漢字コード

    どなたかご教授下さい。 現在、産業用のラベルプリンタでラベルを作成しておりますが そのラベルプリンタは、JIS漢字コードでの入力しかできません。 JIS漢字コード表を見ながら、項目を入力していかなければならない為、非常に 時間がかかってしまいます。 PCであらかじめ項目を入力して、JIS漢字コードに変換するような事は可能で しょうか?(例:あいう→2224,2424,2624) もしくは、そういうフリーのソフト等はあるのでしょうか? ご解答お待ちしております。宜しくお願い致します。

  • IBM漢字コードのSJIS変換方法

    こんにちは。 現在IBMホストのデータをFTPしてUNIX上にて使用しています。ファイルの内容はcsvファイルで、ある項目は英数字のみ、ある項目は漢字のみというような物です。 現在、英数字は上手くいってますが、漢字の部分が化けてしまっています。 今やっているやり方は、ホストのファイルをbinaryモードでFTPして、ddコマンドにてEBICDICコードをASCIIコードに変換します。しかし、漢字の部分が化けているという状況です。 IBMのホームページをみると、 「IBM漢字コードとシフトJISとの変換は、オペレーティング・システム標準の iconvコマンドとiconv()サブルーチンで可能ですので、こちらをご利用下さい。 」 と書いてありますが、まったく要領を得ません。 iconvをmanのコマンドで見ましたが、書いてある内容が理解できません。 どなたか同じような経験をしたかた、アドバイスをよろしくお願いします。 iconvのオプションはこう付ければ上手くいくとか、 変換表を自前で作成したなどなど、他にこんな方法があるなどヒントをいただけると助かります。

  • 独自コード変換方法について

    UNIX-Cにて独自でファイルから読みこんだ文字をSJIS→JISまたはJIS→SJISに変換する関数を作成したいのですがどのように作成すべきか全く検討がつきません。 色々なHPも探してみたのですが変換プログラムの紹介やコマンド(nfk)などの使い方などがほとんどで・・・。 何か参考になるHPをお知りのかた、または簡単に作成できるヒントを下さればと思います。 よろしくお願いします。

  • VB2005でJIS拡張漢字の各文字コードを取得する方法

    ある関数に文字列を渡して各文字コードを取得するプログラムを作成しようとしています。 基本的な文字のコードは取得できるのですが、JIS拡張漢字のほとんどが正しく取得できません。 失敗している文字は内部的に「?」(3F)となってしまいます。 例:拡張漢字のコード値(SJIS:81B2)を変換するとコード値が「3F」になってしまう。(テキストエディタなどで文字化けすると「?」に化けるのと同じなのかな?) 正しく文字コードを取得する方法をご存知の方、またヒントなどありましたらよろしくお願いします。 【環境】WindowsXP     VisualBasic2005 【プログラムの流れ】例:SJISコードを取得する場合 文字列を受取る→1文字取得→System.Text.EncodingでSJIS指定のバイト型配列文字に変換(文字コードを取得)

  • diffコマンドの無視条件指定方法(改行コード, 特定行)

    Unix等のDiffコマンドの結果で、いくつかの条件を無視したいのですが 方法がわかりませんでした。 よろしければどなたか教えていただけないでしょうか。 1.改行コードを無視したい  テキストの内容は同じだけど、改行コードが異なったファイルを扱う場合、すべての行が差分として扱われてしまいます。 改行コードを無視したdiffのとりかたはないでしょうか?  2.特定の行を無視したい  CVSのRCSキーワードが異なる行は無視して差分をとりたいのですが、 上手くいきません。。。-Iオプションで正規表現が指定できるとのことですが、挙動がどうも不明です。  上手くいかない例:diff -I '\$Date' a.c b.c ちなみに試みた環境は、cygwinでdiffは以下のバージョンです。 $ diff -v diff (GNU diffutils) 2.8.7 どちらか片方でもわかるかたいらっしゃいましたら、よろしくお願いいたします。

  • dosコマンドプロンプト %0の扱いですが、

    dosコマンドプロンプト %0の扱いですが、 この度dosのbatファイルを作成しましたが、 abc.batのようなファイル名で、 %0を使うと、「abc.bat」と全てが参照されてしまいます。 「abc」のみを取り込みたい(.batを落としたい)のですが、 どう書けば宜しいのでしょうか。 宜しくお願いします。

  • Becky2 mboxでのエクスポート

    Becky! 2 (ver2.58)で、エクスポート UNIX mbox 形式 で作ったファイルの日本語部分が 読めません。ASCIIの部分は読めます。 エディタは秀丸でエンコード形式を日本語(JIS)にしていますが、本文の漢字の部分 が「=1B$B0f4X$G$9!#=1B(B」というように文字化けします。 ファイルの中身をバイナリエディタで調べてみると、漢字コードはJISに合っているよう ですが「ESC $ @」などのエスケープシーケンスのコードが正しくないようです。 また、他のPCで試すと正しく表示できますので、私のPCの設定に原因があるように 思われるのですが、何がいけないのかが分かりません。 アドバイスお願いします。

  • ファイルのチェック

    教えて下さい。 UNIX上でデータベースのバックアップを行なっています。 毎日コールドバックアップで、 データベースファイルを別領域(ディレクトリ)へ コピー(cp)しています。 その時、実際、元のファイルとコピーしたファイルが 同じものか、チェックをしたいのですが? 「find」コマンドと「diff」コマンドを組み合わせて できる事を調べたのですが、どういう風に 組み合わせていいかわかりません。 その他の簡単なやり方でも構わないので 教えて下さい。 宜しくお願いします。