taggaの日記: Shift JIS 決め打ちなのか 5
日記 by
tagga
うっとこの成績処理システム、 CSVをアップロードして出せる。 ただし、仕様がマニュアルに載っていない。
Excelからの出力を想定しているはずで、 実際、文字コードはShift-JISなら作動する。 けど、Google Sheets の出力は UTF-8。 BOMつきならいけるかもと、 A1 に =char(hex2dec("FEFF")) をつっこんで、BOMつきUTF-8にしてみたけど、 読んでくれない。 Excelは読んでくれるのに。 がっかり。
あと、 例外扱いの評価事由のためのラベルが分からない。 入力ずみをCSV出力したものに、該当するラベルがないので、 もしかして自動処理できないんだろうか。
そのCSV (スコア:1)
全セルが""でくくられたりしてたりしませんか?
# 可能性だけですが "0xFEFF",... とかなってたりしないかなって
M-FalconSky (暑いか寒い)
Emacs で開けてコード変換したので (スコア:1)
fileコマンド でBOM付きUTF-8 になっているのを確認したあと、 成績システムにはねられたので、 中身の点検を兼ねて Emacs で開けて SJIS に変換して、読み込ませました。 "つきコラムは皆無です。 Excelでの動作確認はバックアップの *.csv~ のサフィックを戻してから、しています。
ネットで見付かる Google Sheets で BOM付きUTF-8の解説記事は、 GASで変換するものばかりなので、 Google が何か特殊な処理をてっきりしているのかと思っていたのですが、 すなおにBOMの相当する U+FEFF (ZERO WIDTH NO-BREAK SPACE)も普通の文字として 処理しているようです。
Re:Emacs で開けてコード変換したので (スコア:1)
なるほど...ありがとうございます。
M-FalconSky (暑いか寒い)
UTF-8のBOM (スコア:1)
UTF-8 の BOM って 0xEF 0xBB 0xBF じゃないかな。
0xFE 0xFF or 0xFF 0xFE だと UTF-16 っす。
それは符号化 (スコア:1)
"\xEF\xBB\xBF" == "\b11101111\b10111011\b10111111"
なので、UTF-8 のバイト列を符号位置に直すと、
0b1111_1110_1111_1111 = 0xFEFF.
BOMの正体は U+FEFF こと ZERO WIDTH NO-BREAK SPACE [fileformat.info]。 リンク先からの解説記事へのリンクが切れているので、そのアーカイブ: http://archives.miloush.net/michkap/archive/2005/01/20/357028.html [miloush.net]