質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

バイナリ

バイナリは、「0」と「1」だけで表現されている2進数のデータ形式。または、テキスト以外の情報でデータが記述されているファイルを指します。コンピューター内の処理は全て2進数で表記されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

2回答

8251閲覧

CSVファイルをバイナリで見た際の疑問点について教えてください。

u_zu

総合スコア52

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

バイナリ

バイナリは、「0」と「1」だけで表現されている2進数のデータ形式。または、テキスト以外の情報でデータが記述されているファイルを指します。コンピューター内の処理は全て2進数で表記されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2020/10/08 15:52

少しトンチンカンな質問かもしれませんがよろしくお願いします。質問は2つです。

あるwebsiteからデータをCSV形式でダウンロードしました。
1つはShift_Jis文字コード出力、もう1つはUTF-8文字コード出力で、内容は同じものです。

質問1

その2つのファイルを見比べてみようと、Stirlingというバイナリエディタでそれぞれ開いたのですが、
Shift_Jisの方は日本語の表記も見えるのですが、UTF-8の方は文字化けしています。
(1つの画像ファイルに並列して並べました)
イメージ説明

文字化けを修正?というかShift_Jisのように日本語を表記するにはどうしたらよろしいのでしょうか?
設定項目をいろいろみたのですが、うまくいきませんでした。

質問2

画像の中でカーソルのある箇所(「ドット」のところ、バイナリだと「0A」のところ)が、
CSVファイルの改行の箇所なのですが、「0A」はアスキーコードだと、「改行」にあたります。
エクセルなどでCSVファイルを作成すると改行コードは「0D」「0A」と「復帰」「改行」と2バイトで表示されます。

これは、エクセルで作成したCSVファイル(もしくはエクセルで保存したCSVファイル)が
Shift_Jisだからであって、画像の方は、WebからダウンロードしたCSVファイルを
そのままバイナリエディタで開いたから(webサーバがUnix?その可能性が高い?)であって、
Shift_Jisではないから、なのでしょうか?

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

firegrape

2020/10/08 16:08

こんばんは。 質問1でShift-jisで日本語で開けたのに、UTF-8の方で日本語表記にしたい理由が知りたいです。 興味とかでしょうか?それとも変換しないといけない理由があるのでしょうか?
u_zu

2020/10/08 16:17

firegrapeさん  >質問1でShift-jisで日本語で開けたのに、UTF-8の方で日本語表記にしたい理由が知りたいです。 理由は特にないです。全くの素人考えで、片方では日本語で、片方では文字化けで。。。なぜだろう と思いまして。。。
guest

回答2

0

ベストアンサー

質問1

Stirling(EBCDICコード表示できるバイナリーエディター)
デフォルトASCIIコードから変換できますがUTF-8は無いように見受けられます。

Binary Editor BZ
をおすすめしておきます。

質問2
改行に用いることができる制御文字
テキストの改行に関しては

  • CR = キャリッジリターン (\r、16進数で 0x0D、10進数で13) — 次の行へ進まずに、カーソルを行の先頭へ移動する。
  • LF = ラインフィード (\n、16進数で 0x0A、10進数で10) — カーソルを行の先頭へ移動せずに、次の行へ下に移動する。

文字コードは関係ありません。

OSがwindowsの場合、基本CR+LFセットで改行としています。
古いMacだとCRのみ、UnixだとLFのみだったりする場合もあります。
今はほぼCR+LFセットなのですがExcelのセル内改行はLFのみだったりします。

この辺りはOS上仕様プログラムの仕様とCSV等使用目的により変化します。
よってプログラマは「CRのみ」「LFのみ」「CR+LFセット」の想定を行い
CSVの読み込みプログラムを作成します。

投稿2020/10/08 16:21

kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u_zu

2020/10/08 16:36

kuma_kuma_さん ありがとうございます。 >この辺りはOS上仕様プログラムの仕様とCSV等使用目的により変化します。 「改行」のみでも「復帰」「改行」と2つにしても 作業者レベルでは差異がない、という理解で よいのでしょうか?(開発者でもないかぎりあまり気にしなくていい?) 例えば、CSVファイルを利用する側から考えると、メモ帳で開いたり、エクセルファイルで開いたり する程度なら利用上、同じように見えるので。。。
kuma_kuma_

2020/10/08 16:43 編集

Windows上でテキストを扱う場合、特殊なソフトでない限り「CRLF」で保存されます。 Windowsのメモ帳で開いても特に問題なく開けます。 今はほとんどのソフトで問題ないようになっています。 ただ保存すると「CRのみ」が「CRLF」として自動変換され保存されます。 よって気にするのはプログラマぐらいです。
u_zu

2020/10/08 16:48

ありがとうございます。実は今回のようにCSVファイルをダウンロードしてきて、そのファイルを基に 簡易な業務ソフトを作ってます。改行コードでレコードを区別しようとしたらCRLFではないので焦りました。 実際にバイナリエディタでみたらCRのみだったので。。。実際問題として、このようにバイナリエディタとかで現物を見て、個別に対応、ということになるんでしょうね。。。素人考えでしたら色々教えてください。
kuma_kuma_

2020/10/08 16:59

そうですね最近はプログラム言語自身で「ファイルから1行読み込む」という命令が既に存在していて 3パターンにすでに対応済みなんでこともあります。よって知らないで作成されている方もいるんじゃないかと感じています。 アドバイス的には 「うまく行で取れない場合は改行コードを確認しましょう」 「できれば3パターン対応としておきましょう」ぐらいです
kuma_kuma_

2020/10/08 17:04

CR+LFにそろえるには 1. CR→CRCRに変換 2. LF→LFLFに変換 3. CRCRLFLF→CRLFに変換 4. CRCR→CRLFに変換 5. LFLF→CRLFに変換
u_zu

2020/10/09 01:08

ありがとうございます。1のCR→CRCRは最初からCRLFとかにしてしまえないんですかね(きっと何か見落としてますね)
kuma_kuma_

2020/10/09 05:04

むかしからある呪文と思ってください。 3パターンで試すと判ります。
u_zu

2020/10/09 10:51

なるほど!
pepperleaf

2020/10/09 11:52

> 保存すると「CRのみ」が「CRLF」として自動変換され しないのもあると思う。(最近のは確認してないが、、、) また、CSVで、空行不要なら、CR/LFをまとめて一つの改行に見なすのもあり。(その方が悩みも少ないと思うが、、)
u_zu

2020/10/10 09:00

pepperleafさん そういうのもあるんですね。Excelくらいしか試したことないです。
guest

0

なるほどです。
こちらとか参考になるのでは
「UTF-8に対応しているバイナリエディタを探したときのメモ」
http://iww.hateblo.jp/entry/20070419/binary

投稿2020/10/08 16:22

firegrape

総合スコア902

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u_zu

2020/10/08 16:32

ありがとうございます。参考にさせて頂きます。UTF-8が見れない、とありますね。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問