特殊文字の類似文字変換No.07050
rosegardenyk さん 12/06/21 04:33
 
rosegardenykです。
以前秀丸の何かで、特殊文字の類似文字変換一覧みたいな表があって利用していたよ
うな記憶があるのですがどうしてもみつかりません。
どなたかご存じならば教えていただけないでしょうか。ÄやÖをAやOをに変
換していたと思います。

今回、調べたところ、
例文:「NEJM.org Copyright © 2012」の丸にcの字の unicode を Hidemarnet
 Explorer では「NEJM.org Copyright c 2012」のように正確ではないが類似の(お
そらくshift-JIS で表示できる)文字に直してくれます。
また、unicode 交じりのテキストをShift-JISで保存しようとする時、「変換できな
い文字を?などに置き換えて保存する」を選ぶとやはり、「NEJM.org Copyright c 2
012」になります。
最も – や — はハイフンや全角のダッシュ「―」には変えてくれま
せんが…。 
これも何かの表に基づいて変換しているのではないかと推測しています。

また、http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Latin-1_characters 
を見ながら一つ、一つ調べてていたのですが、化学物質によく使われるギリシャ文字
のα、β…μは取り込んだ後はshift-JISにあるのと同じ文字だし、microのµと
ギリシャ文字のミューμは違うけれども、これもギリシャ文字のμにして表示される
のでshift-JISでの保存に問題なく、Ä〜Ö、–、—、©や
® 等限られた文字さえケアしておけば、あとはshift-JISで保存し同でもいい
特殊な文字は?に変換されてもかまわない(無理にunicode で保存しない)という考
えに傾いています。ということで類似文字変換一覧みたいな表があると大変参考にな
ります。


[ ]
RE:07050 特殊文字の類似文字変換No.07052
秀丸担当 さん 12/06/21 15:00
 

Hidemarnet Explorer の場合、HTMLで文字コード指定の場合、Unicodeとして表
示します。
文字コード指定ではなく、特殊文字を文字列で表す © &ndash
; — ® ™ といっためぼしいものは独
自に判断して勝手にShift-JISとしても保存しやすい都合のいい文字列に変換し
ていたりします。

秀丸エディタ本体でUnicodeをShift-JISとして保存したときは、独自の判断は無
く、WideCharToMultiByte相当の変換をしています。
seterrormode 3,0x20;
saveas "xxxx.txt",sjis;
といった感じで保存するとこれに近い結果が得られることになると思います。

WideCharToMultiByteの具体的な変換の表に相当するものは、Shift-JISの場合、
コードページ変換テーブルの
C:\Windows\System32\C_932.NLS
が該当することになると思いますが、このファイルの内容はバイナリで、テキス
トの一覧表として得る方法があるのかどうかはわからないです。

[ ]
RE:07052 特殊文字の類似文字変換No.07053
いいじま さん 12/06/21 18:04
 
いいじまです。いつもおつかれさまです。

> WideCharToMultiByteの具体的な変換の表に相当するものは、Shift-JISの場合、
> コードページ変換テーブルの
> C:\Windows\System32\C_932.NLS
> が該当することになると思いますが、このファイルの内容はバイナリで、テキス
> トの一覧表として得る方法があるのかどうかはわからないです。

ここなんてどうでしょう。
http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT

[ ]
RE:07052 特殊文字の類似文字変換No.07054
rosegardenyk さん 12/06/22 14:51
 
>WideCharToMultiByte相当の変換をしています。
>seterrormode 3,0x20;
>saveas "xxxx.txt",sjis;
>といった感じで保存するとこれに近い結果が得られることになると思います。
上はSJISで、強制保存し場合と同じですよね。

一応マクロで試してみました。
左端にあるのが、unicodeを
seterrormode 3,0x20;
saveas "SJIS類似保存.txt",sjis;
で保存後読み直した記号です。

? 0x2122 &trade 小さな "TM"
R 0x00AE &reg  ○の中に 大文字の R
? 0x2013 endash 短いダッシュ
? 0x2014 emdash 長いダッシュ
A 00C4 capital letter A with diaeresis, いわゆる独語のAのウムラウト
e 0x00E9 latin small letter e with acute (人名Preziosi等 の "e" 上に "`" が
付いたような文字、仏語か),
"?" 0x00A0 no-break space = non-breaking space kakususpace 見かけspace " "
と同じ
"!" 0x00A1 inverted exclamation mark (!) をさかさまにしたもの
"¢" 0x00A2 cent sign "c" に "/" が刺さったような通貨のセント
"£" 0x00A3 pound sign
"?" 0x00A4 currency sign 小さい○を囲む四角の四隅から短い線の出ている記号
"\" 0x00A5 Yen
"|" 0x00A6 → 0x007C  broken bar = broken vertical bar
"§" 0x00A7 SJISにもある
"¨"  SJISにあり 0x00A8 diaeresis = spacing diaeresis ウムラウトの点2個部分
"c" 0x00A9 &copy  ○の中に 小文字の c
"a" 0x00AA feminine ordinal indicator  小さいaにアンダーライン
"A" 0x00C2 Latin capital letter A with circumflex
"A" 0x00C3 latin capital letter A with tilde
"?" 0x2264 ≤ less-than or equal to ≦の=部分が一本線の記号
"?" 0x2265 ≥ greater-than or equal to ≧の=部分が一本線の記号
"±" 0x00B1 plus-minus sign = plus-or-minus sign はSJISの±と同じ
""

以上は、ほんの一部ですが、"?" のついたもののうち、医学論文に出てきそうなもの
にだけ、適当な変換を自分のマクロで独自に用意すればよいということになりますね。
 例えば、no-break spaceは見かけspaceと同じなので "?"ではなく、SJIS のspace
にしておけばいいし2種類のダッシュもハイフンと全角ダッシュにしておけばよさそ
うです。currency signはまず出てこないので無視し、 &le, &ge はそれぞれ ≦、
≧にしておけばよさそうです。、
また、タグにも使われる "<"や">"はHTMLからの取り出し では"&lt;z"、"&gt;"とな
って表示されるので直接変換します。

このやり方で十分ですので、特に変換テーブルは必要なくなりました。
ありがとうございました。

[ ]