diary/Kojima/2010-08-24
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[diary/Kojima]]
・「〜」の文字コード
Windowsな環境で作ったアーカイブファイルをPlamoな環境で開...
たまに "〜” がおかしい場合があるので少し調べてみた。
結構イヤらしいのは、KDEのKonsoleやgnome-terminal, XfceのT...
EmacsやFD経由だとうまく表示されない、という環境依存なとこ...
例えば、この a と b というファイルは、上記問題のないター...
% cat a
A〜B
C〜D
% cat b
A〜B
C〜D
ところが、Emacsで開くと、ファイル a の"〜”は正しく表示で...
#ref("emacs.png")
何が違うんだろう、、としばらく調べてみたところ、hexdump -...
% hexdump -C a
00000000 41 8f a2 b7 42 0a 43 8f a2 b7 44 0a ...
0000000c
% hexdump -C b
00000000 41 a1 c1 42 0a 43 a1 c1 44 0a ...
0000000a
これで見ると、ファイル b の "〜" は a1c1 という正しい euc...
ファイル a の "〜" は、同じ "〜”に見えるものの、8f a2 b7 ...
この 8f a2 b7 というシーケンスが、なぜ "〜" になるのかは...
8f は JIS X 0211のC1集合のss3(Single Shift 3)かな、と思...
UTF-8 でも a2 b7 なんてコードは無さげなのだが、Konsoleと...
結果を示しているのを見ると、何らかのルールは決まってそう...
識者の目に触れることを期待して、このあたりに晒しておこう ...
- cat や nkf だとこんな感じになる
% cat a
A〜B
C〜D
% nkf -e a
A召キB
C召キD
この結果を見る限り、8f a2 b7 というシーケンスは nkf が認...
それらを素で通したらkonsole等のターミナルが"〜"にしている...
Qtのレベルなのかなぁ?-- [[kojima]] &new{2010-08-24 (火) 1...
- こんなpythonのコードで試してみたら、
#! /usr/bin/python
# -*- coding: euc-jp -*-;
import sys
def main():
file = sys.argv[1]
f = open(file, "r")
lines = f.readlines()
for line in lines:
print "before:", line
t = line.decode('euc-jp')
print "after :", t
tt = t.encode('euc-jp').replace("~", "〜")
print "convd :", tt
if ( __name__ == "__main__" ):
main()
Emacs 上ではこういう結果になった。
% ./test.py a
before: A□B
after : A~B
convd : A〜B
before: C□D
after : C~D
convd : C〜D
この結果を見ると、Pythonの世界で 8f a2 b7 というシークエ...
になって、その状態で"~"を"〜"に変換して EUC-JP に encode ...
hexdump で見ても、
% ./test.py a | hexdump -C
00000000 62 65 66 6f 72 65 3a 20 41 8f a2 b7 42 0a 0a ...
00000010 66 74 65 72 20 3a 20 41 7e 42 0a 0a 63 6f 6e ...
00000020 64 20 3a 20 41 a1 c1 42 0a 0a 62 65 66 6f 72 ...
00000030 3a 20 43 8f a2 b7 44 0a 0a 61 66 74 65 72 20 ...
00000040 20 43 7e 44 0a 0a 63 6f 6e 76 64 20 3a 20 43 ...
00000050 c1 44 0a 0a ...
00000054
ということで、初期状態は 8f a2 b7 が、euc-jp -> UTF8 する...
euc-jpに戻すと a1 c1 になる、みたい。
とりあえず当初の目的だった 8f a2 b7 というコードを持った...
8f a2 b7 というシークエンスがgtk/Qtな世界だとeuc-jpの"〜"...
そもそもWindowsな世界で作ったファイル名がEUC-JPの世界で 8...
- テスト用の python のコード、
tt = t.encode('euc-jp').replace("~", "〜")
としてたけど、これは "〜" が euc-jp な世界なので、そっち...
tt = t.replace("~", u'〜')
の方が正しいか。-- [[kojima]] &new{2010-08-24 (火) 21:59:...
- wassrの方で教えてもらったけど、8f a2 b7 というのは eucJ...
- 毎度あさってな反応ごめんなさいそもそもWindowsでファイル...
- 自由は苦しいんだ、いつも。 -- [[きゅうる村]] &new{2010-...
- ここで討論するつもりはありません。一言だけ、人間てボタ...
- 良く分からないけど,これってファイル名だけじゃなくて,...
- まぁ、UTF-8に行って帰ってくると同じにならない、というの...
- でも、コマンドラインから操作しようとすると、〜 に見える...
#comment
終了行:
[[diary/Kojima]]
・「〜」の文字コード
Windowsな環境で作ったアーカイブファイルをPlamoな環境で開...
たまに "〜” がおかしい場合があるので少し調べてみた。
結構イヤらしいのは、KDEのKonsoleやgnome-terminal, XfceのT...
EmacsやFD経由だとうまく表示されない、という環境依存なとこ...
例えば、この a と b というファイルは、上記問題のないター...
% cat a
A〜B
C〜D
% cat b
A〜B
C〜D
ところが、Emacsで開くと、ファイル a の"〜”は正しく表示で...
#ref("emacs.png")
何が違うんだろう、、としばらく調べてみたところ、hexdump -...
% hexdump -C a
00000000 41 8f a2 b7 42 0a 43 8f a2 b7 44 0a ...
0000000c
% hexdump -C b
00000000 41 a1 c1 42 0a 43 a1 c1 44 0a ...
0000000a
これで見ると、ファイル b の "〜" は a1c1 という正しい euc...
ファイル a の "〜" は、同じ "〜”に見えるものの、8f a2 b7 ...
この 8f a2 b7 というシーケンスが、なぜ "〜" になるのかは...
8f は JIS X 0211のC1集合のss3(Single Shift 3)かな、と思...
UTF-8 でも a2 b7 なんてコードは無さげなのだが、Konsoleと...
結果を示しているのを見ると、何らかのルールは決まってそう...
識者の目に触れることを期待して、このあたりに晒しておこう ...
- cat や nkf だとこんな感じになる
% cat a
A〜B
C〜D
% nkf -e a
A召キB
C召キD
この結果を見る限り、8f a2 b7 というシーケンスは nkf が認...
それらを素で通したらkonsole等のターミナルが"〜"にしている...
Qtのレベルなのかなぁ?-- [[kojima]] &new{2010-08-24 (火) 1...
- こんなpythonのコードで試してみたら、
#! /usr/bin/python
# -*- coding: euc-jp -*-;
import sys
def main():
file = sys.argv[1]
f = open(file, "r")
lines = f.readlines()
for line in lines:
print "before:", line
t = line.decode('euc-jp')
print "after :", t
tt = t.encode('euc-jp').replace("~", "〜")
print "convd :", tt
if ( __name__ == "__main__" ):
main()
Emacs 上ではこういう結果になった。
% ./test.py a
before: A□B
after : A~B
convd : A〜B
before: C□D
after : C~D
convd : C〜D
この結果を見ると、Pythonの世界で 8f a2 b7 というシークエ...
になって、その状態で"~"を"〜"に変換して EUC-JP に encode ...
hexdump で見ても、
% ./test.py a | hexdump -C
00000000 62 65 66 6f 72 65 3a 20 41 8f a2 b7 42 0a 0a ...
00000010 66 74 65 72 20 3a 20 41 7e 42 0a 0a 63 6f 6e ...
00000020 64 20 3a 20 41 a1 c1 42 0a 0a 62 65 66 6f 72 ...
00000030 3a 20 43 8f a2 b7 44 0a 0a 61 66 74 65 72 20 ...
00000040 20 43 7e 44 0a 0a 63 6f 6e 76 64 20 3a 20 43 ...
00000050 c1 44 0a 0a ...
00000054
ということで、初期状態は 8f a2 b7 が、euc-jp -> UTF8 する...
euc-jpに戻すと a1 c1 になる、みたい。
とりあえず当初の目的だった 8f a2 b7 というコードを持った...
8f a2 b7 というシークエンスがgtk/Qtな世界だとeuc-jpの"〜"...
そもそもWindowsな世界で作ったファイル名がEUC-JPの世界で 8...
- テスト用の python のコード、
tt = t.encode('euc-jp').replace("~", "〜")
としてたけど、これは "〜" が euc-jp な世界なので、そっち...
tt = t.replace("~", u'〜')
の方が正しいか。-- [[kojima]] &new{2010-08-24 (火) 21:59:...
- wassrの方で教えてもらったけど、8f a2 b7 というのは eucJ...
- 毎度あさってな反応ごめんなさいそもそもWindowsでファイル...
- 自由は苦しいんだ、いつも。 -- [[きゅうる村]] &new{2010-...
- ここで討論するつもりはありません。一言だけ、人間てボタ...
- 良く分からないけど,これってファイル名だけじゃなくて,...
- まぁ、UTF-8に行って帰ってくると同じにならない、というの...
- でも、コマンドラインから操作しようとすると、〜 に見える...
#comment
ページ名: