MacOSX 10.6の謎
【サンプル1】
$ ls Twitter-of-Yuki-ebook-2010103101_ページ_98.jpg | od -x
0000000 7754 7469 6574 2d72 666f 592d 6b75 2d69
0000020 6265 6f6f 2d6b 3032 3031 3031 3133 3130
0000040 e35f 9a83 83e3 e3bc b882 395f 2e38 706a
0000060 0a67
0000062
$
【サンプル2】
$ ls *98.jpg
Twitter-of-Yuki-ebook-2010103101_ページ_98.jpg
$
$ ls *98.jpg | od -x
0000000 7754 7469 6574 2d72 666f 592d 6b75 2d69
0000020 6265 6f6f 2d6b 3032 3031 3031 3133 3130
0000040 e35f 9883 82e3 e39a bc83 82e3 e3b7 9982
0000060 395f 2e38 706a 0a67
0000070
$
【サンプル3】
$ echo Twitter-of-Yuki-ebook-2010103101_ページ_98.jpg | od -x
0000000 7754 7469 6574 2d72 666f 592d 6b75 2d69
0000020 6265 6f6f 2d6b 3032 3031 3031 3133 3130
0000040 e35f 9a83 83e3 e3bc b882 395f 2e38 706a
0000060 0a67
0000062
$
サンプル2の上記の結果、変ですよね。バイナリダンプの結果は、同じでないといけないと思うのだが?
文字としては。サンプル1と3は、「ページ」の「ペ」が、「ぺ」で、サンプル2は、「ヘ」+「 ゚」になっているようだ。この為に、sedでのファイル名の加工が、巧く出来ない(T^T)ウック! 「ページ」をファイル名から除きたい。
$ ls Twitter-of-Yuki-ebook-2010103101_ページ_98.jpg | od -x
0000000 7754 7469 6574 2d72 666f 592d 6b75 2d69
0000020 6265 6f6f 2d6b 3032 3031 3031 3133 3130
0000040 e35f 9a83 83e3 e3bc b882 395f 2e38 706a
0000060 0a67
0000062
$
【サンプル2】
$ ls *98.jpg
Twitter-of-Yuki-ebook-2010103101_ページ_98.jpg
$
$ ls *98.jpg | od -x
0000000 7754 7469 6574 2d72 666f 592d 6b75 2d69
0000020 6265 6f6f 2d6b 3032 3031 3031 3133 3130
0000040 e35f 9883 82e3 e39a bc83 82e3 e3b7 9982
0000060 395f 2e38 706a 0a67
0000070
$
【サンプル3】
$ echo Twitter-of-Yuki-ebook-2010103101_ページ_98.jpg | od -x
0000000 7754 7469 6574 2d72 666f 592d 6b75 2d69
0000020 6265 6f6f 2d6b 3032 3031 3031 3133 3130
0000040 e35f 9a83 83e3 e3bc b882 395f 2e38 706a
0000060 0a67
0000062
$
サンプル2の上記の結果、変ですよね。バイナリダンプの結果は、同じでないといけないと思うのだが?
文字としては。サンプル1と3は、「ページ」の「ペ」が、「ぺ」で、サンプル2は、「ヘ」+「 ゚」になっているようだ。この為に、sedでのファイル名の加工が、巧く出来ない(T^T)ウック! 「ページ」をファイル名から除きたい。
トラックバック(0)
このブログ記事を参照しているブログ一覧: MacOSX 10.6の謎
このブログ記事に対するトラックバックURL: http://the.nerd.jp/blogs/cgi-bin/mt-tb.cgi/4484
インターネットを検索すると、MacOSXからの問題で、古い話だった。でも、解決している話は、見つかっていない(T^T)ウック!
とりあえず、ファイル名から文字列「ページ_」を取り除くプログラムを作った(下記)。
#include
char pp[] = {
0xe3, 0x83, 0x98, 0xe3, 0x82, 0x9a, 0xe3,
0x83, 0xbc, 0xe3, 0x82, 0xb7, 0xe3, 0x82,
0x99, 0x5f, 0x00
};
char buf[4096];
int main(int argc, char **argv )
{
int i,j, len;
char cc;
len = strlen( (char *)pp );
for (i=0;;) {
cc = getchar();
if (cc == EOF ) { break; }
if (cc == pp[i] ) {
buf[i++] = cc;
if ( i >= len ) {
i=0;
}
continue;
} else {
if ( i != 0 ) {
for (j=0;j putchar( buf[j] );
}
i = 0;
}
putchar( cc );
}
}
return 0;
}
以上で、実行結果例は、下記。
$ ls 00*
00ページ_11
$ ls 00* | ./a.out
0011
$ ls 22*
22ペー99
$ ls 22* | ./a.out
22ペー99
$
文字列「ページ」が取り除く事が出来た。これの用途は、Acrobatで書き出したときに、勝手に、ファイル名に、追加される文字列「ページ_」を取り除く為に、使います。ファイル名は、英数字にしたいものです。
文字列「ページ_」の内訳は、下記。
0xe3, 0x83, 0x98, ←「へ」
0xe3, 0x82, 0x9a, ←半濁点(結合文字)
0xe3, 0x83, 0xbc, ←「ー」
0xe3, 0x82, 0xb7, ←「シ」
0xe3, 0x82, 0x99, ←濁点(結合文字)
0x5f, ←「_」
0x00 ←終端
この半濁点と濁点が分離されてた二文字を、一文字の(半)濁点付き文字に変換する変換プログラムがあるのかしら? まあ、Adobe Acrobat側で、ファイル名に付与される文字列を変更できるようにしてくれていた方が、断然、便利ではあるのでけど。