秀丸 Help でいう Unicodeとは?No.07018
rosegardenyk さん 12/06/10 09:20
 
rosegardenykです。

秀丸マクロヘルプでいうUnicodeとはどのUnicodeを指しているのかわからず頭が混乱
してます。

やろうとしていること
Hidemarnet Explorerで 
@http://www.nankodo.co.jp/yosyo/xforeign/nejm/365/365sep/xf365-09-0787.htm
 (日本語医学論文 抄録 shift-JISで変換可) 
Ahttp://www.nejm.org/doi/full/10.1056/NEJMoa1010076 (英語医学論文 shift-
JIS にない特殊記号を含む)
表示内容をそれぞれ selectall し、通常の秀丸「無題」にcopy&paste してから、名
前をつけ、色々なマクロ処理をしようとしています。

openfile の Help の説明では次のようにあります。
エンコード(文字コード/ファイル形式)の指定は以下の通りです。
 sjis   Shift-JIS(通常のファイル形式)
 unicode Unicode(UTF-16)
 utf7   Unicode(UTF-7)
 utf8   Unicode(UTF-8)
 (以下はV8.00以降)
 unicode_be Unicode(UTF-16,Big-Endian)
 utf32    Unicode(UTF-32)
 utf32_be  Unicode(UTF-32,Big-Endian)

ケース1:そもそも、webにあるAのHTMLに使われているのはUTF-16 なのでしょう
かUTF-8なのでしょうか?
UTF-7やUTF-16,Big-Endian は 特別な原語(ウイグル語とか)にのみに使うのでしょ
うか? 言い換えると、英語の医学論文の世界では気にしなくてもよいでしょうか?
エンコードのの知識がないものですから、頭が混乱しています。

ケース2:上記で保存しようとするとAに 「shift-JIS」に無い文字(例、&#880
4;)が含まれているため変更MSGが表示されます。このMSGの「エンコードの種類を変
更して保存する」のデフォルト値が「Unicode(UTF-16)」になっています。
ちなみに、秀丸エディターの「文字コード」で調べると 「≤」はUnicode:0x
2264, Unicode(UTF-8):0xE289A4, shift-JIS, EUC, JISはコードなしです。
普通、 Help で断りなしで Unicode というと UTF-16 を指すのでしょうか?

ケース3:unichar() の Help では
char関数のUnicode版です。(V5.10以降)
 n1のUnicodeの値を文字列にして返します。
 返す値は文字列型です。

unichar( 0x3042 )        … "あ"が返ってきます。

とありますが、
//Test Macro
message "1 unichar(0xE38182) = " + unichar(0xE38182); → "・"のような記号
が返ってきました。
message "2 unichar(0x0342) = " + unichar(0x3042); →"あ"が返ってきました。
endmacro;

これを見ると、unichar は UTF8 は扱ってないようですが、ここでいうUnicodeの値
とはUTF-16 を指すのでしょうか?


ケース3:マクロからのdllfunc呼び出しの「ユニコード文字を扱う時の注意、およ
び、SetUnicodeIndexAutoConvert関数 」
これを」読んで桁ずれの問題を
#n = dllfunc("SetUnicodeIndexAutoConvert", 1);
で解決できましたが、これはどの Unicode に対しても有効なのでしょうか?

ケース4:「やろうとしていること」のファイルをUnicodeで保存し、日英のっ用語
集を適用して、日→英、英→日 用語置き換えを考えています。
Hidemarnet Explorer以外からも、直接 HTML source からタグ取り除いた文を扱うこ
とも考えています。Unicodeの UTF-16,UTF-8 のどちらで変換するのが安全でしょう
か? 
用語集は同じエンコードで統一することを考えていますが、仮に特殊文字を一切含ま
ない場合は、shift-JISでエンコードしておいても問題は起きないでしょうか?
また、ケース3以外の場合も何か考慮しておく点があるでしょうか?

 

[ ]
RE:07018 秀丸 Helpでいう Unicodeとは?No.07019
h-tom さん 12/06/10 13:16
 

h-tom です。

>秀丸マクロヘルプでいうUnicodeとはどのUnicodeを指しているのかわからず頭が混乱
>してます。
Unicode :符号化文字集合(文字にコードを割り付ける)
UTF-xx  :文字符号化方式(符号化文字集合をコンピュータで扱えるデータに変換す
る方式)

文字を示す"Unicode"というコードを、コンピュータで操作するためのデータ形式(?)
として、UTF-8,16,32 があるということです。
(大雑把な説明なので、詳細は調べて下さい。)

・秀丸マクロは、基本的にShift_JIS(範囲外の場合は、独自コード)です。
・wcs系の関数を扱う場合は、UTF-16でデータを扱います。
・dllfuncw/dllfuncstrwの場合は、UTF-16でデータを扱います。

unichar で要求しているのは、"Unicode"です。UTF-8で変換したコードでは、
正常に変換できないです。

[ ]
RE:07018 秀丸 Help でいう Unicodeとは?No.07020
アルビレオ さん 12/06/10 13:49
 
アルビレオです。

あまり正確な説明ではないですが、テキストエディタで使う分には「UTF-なんと
かはUnicodeのテキストをファイルに保存するときの形式の違いであって、編集
中の文字コードとしてはどれも Unicode という共通のコード」と考えて差し支
えないと思います。

[ ]
RE:07019 秀丸 Helpでいう Unicodeとは?No.07027
rosegardenyk さん 12/06/10 21:35
 
h-tomさんいつも的確なお返事ありがとうございます。
>Unicode :符号化文字集合(文字にコードを割り付ける)
>UTF-xx  :文字符号化方式(符号化文字集合をコンピュータで扱えるデータに変換す
>る方式)
なるほど、アルビレオのお返事にもあるようにUnicodeとしては一つのコードなわけ
ですね。コンピュータで扱えるデータに変換する方式がいろいろあるということです
が、前に、辞書などのweb検索で h-tomさんに教えて頂いたように、検索語をUTF-8に
してある場合がありましたよね。 これは、入り口はUTF-8方式で受け取って、内部
で"Unicode"に直して、"Unicode"からなる辞書データなどに対し処理をしているとい
う理解でよろしいでしょうか?

>・秀丸マクロは、基本的にShift_JIS(範囲外の場合は、独自コード)です。
>・wcs系の関数を扱う場合は、UTF-16でデータを扱います。
>・dllfuncw/dllfuncstrwの場合は、UTF-16でデータを扱います。
こうしてみると、特殊文字(例、≦の=部分が一本線のもので医学英論文に頻出)を
含むテキストを秀丸で扱うなら、無理やりshift-JISで強行保存して文字化けさせず
に、デフォルト(?)のUnicode (UTF-16)にしておけばよいということになりますで
しょうか? UTF-8でファイル保存するのは避けた方が良いとかその辺のアドバイス
が頂けると、私としては一件落着ということになります。 どうぞ、よろしく、ご教
示ください。
 

[ ]
RE:07018 秀丸 Help でいう Unicodeとは?No.07028
秀まるお2 さん 12/06/10 21:47
 
 昔はユニコードといえば、今で言うutf-16しかありませんでした。なので、
utf-16のことを、単に「ユニコード」と表現してる所が多々あります。

 それとは別に、マクロヘルプなどで「ユニコード文字」と表現してる所があり
ます。これはつまり、「Shift-JISの文字コードで表現出来ない、ユニコード固
有の文字」って意味になります。

 例えば copyrightのマルcのマークとか、中国語の漢字とかハングル文字とか
は、Shift-JISの文字コードの中には存在しません。こういう文字のことを
「ユニコード文字」と表記してしまってる所があります。その辺ちょっとややこ
しくてすみません。

 「ユニコード文字が含まれてる」とかいう表現は、つまり、Shift-JIS文字
コードで保存しようとしても保存出来ない文字かある、みたいな意味になります。

 それと、「エンコード」と「文字コード」と言い方が2種類ある所もあります。
その辺もややこしいのですが、なんとか雰囲気で理解して欲しい所です。

[ ]
RE:07027 秀丸 Helpでいう Unicodeとは?No.07029
h-tom さん 12/06/10 22:55
 

h-tom です。

>してある場合がありましたよね。 これは、入り口はUTF-8方式で受け取って、内部
>で"Unicode"に直して、"Unicode"からなる辞書データなどに対し処理をしているとい
>う理解でよろしいでしょうか?
コンピュータでUnicodeを処理するには、データの形式(UTF-xx)を決める必要が
あります。受け取るデータがUTF-8なら、辞書データもUTF-8で作成すれば、変換
する必要は無いです。

>こうしてみると、特殊文字(例、≦の=部分が一本線のもので医学英論文に頻出)を
>含むテキストを秀丸で扱うなら、無理やりshift-JISで強行保存して文字化けさせず
>に、デフォルト(?)のUnicode (UTF-16)にしておけばよいということになりますで
>しょうか? UTF-8でファイル保存するのは避けた方が良いとかその辺のアドバイス
>が頂けると、私としては一件落着ということになります。 どうぞ、よろしく、ご教
>示ください。
Unicodeなら、UTF-8でも、UTF-16でも問題ないです。
UTF-16にすれば、BOM(Byte Order Mark)もつけられるので、文字コードの誤認識
がないでしょう。

[ ]
RE:07028 秀丸 Help でいう Unicodeとは?No.07038
rosegardenyk さん 12/06/11 18:57
 
> 昔はユニコードといえば、今で言うutf-16しかありませんでした。なので utf-16
>のことを、単に「ユニコード」と表現してる所が多々あります。
いろいろと歴史的経緯があるのですね。こういうコメントも聞きたかったのでありが
とうございます。

[ ]
RE:07029 秀丸 Helpでいう Unicodeとは?No.07039
rosegardenyk さん 12/06/11 19:05
 
rosegardenykです。
>Unicodeなら、UTF-8でも、UTF-16でも問題ないです。
>UTF-16にすれば、BOM(Byte Order Mark)もつけられるので、文字コードの誤認識が
>ないでしょう。
Helpで調ました。UTF-16にしておけば、BOMの指定をしなくても、自動的にBOM指定し
てされてエンコードの自動認識で誤認されないということですね。いろいろと丁寧な
アドバイスありがとうございました。

[ ]