日韓混在wo良い方法

[上に] [前に] [次に]
杉山 [E-Mail] 2000/03/17(金) 01:08:37
日韓混在のページを作ってみました。(コード:utf-8)
http://www.ysugiyama.com/vinyl/jiten-ms.htm
日韓混在の方法にはUNICODEを埋め込む方法もあるようです。
(例↓)
http://www.geocities.co.jp/Hollywood/8908/business.html
私は↑この作り方が分からないのですが、
どちらの方法でも日韓混在で読めるお客さんのパーセンテージは
同じなのでしょうか。
日本語Windows使用のお客さんが多いので、韓国語Windows上
のことは考えて頂かなくても結構です。

ひみつ 2000/03/17(金) 01:26:55
ていうか、そもそもUTF-8というのはUnicode(UCS-2)の符号化方式の
ひとつです。でもって例で挙げているほうはShift_JISで、ハングル
文字(ですか?)の部分は数値実体参照で表されているのです。実体参照は
符号化方式に依存しないので、ブラウザでエンコードが何に選ばれて
いようが、リソース自体がどの文字コードで保存されていようが、常に
指定された文字番号の文字が表示されます。
文字番号はISO 10646のものですが、Unicodeとも互換があるので
Unicodeの番号だと思ってしまってもとりあえずOKでしょう。

んで、どっちが良いかということになると、杉山さんが作り易い
ほうで良いと思います。

三原克大 [E-Mail] 2000/03/17(金) 01:36:07
仕様の上ではどちらも
同じように表示されなければならないのですが、
残念ながら Netscape Communicator/Navigator の不備により
杉山さんのやり方をそのままお続けになることをお勧めします。
ただし、Word 97 で HTML ドキュメントを作成するのは
はっきり言って周囲の迷惑なので、
別のソフトに乗り換えられるようお願いします。
# HTML の文法ミスが多すぎるのです。

杉山さんのページでも Unicode の文字を埋め込んでいます。
というか、全文を Unicode そのもので記述しています。
charset=utf-8 とは、Unicode を ASCII 互換で
保管するための方法の一つです。
# アルゴリズムは難しいので、パス。

例として紹介されているページでは
表示させたい文字が Unicode でどの番号を振られているか調べて、
&#(番号の10進表記); を書き込んでいます。
HTML 4 では、ブラウザは上の文字列を読み込んだときに
Unicode の当該文字だと解釈できなければなりません。
http://www.w3.org/TR/html4/charset.html#entities

この国際化機能については、二大ブラウザでは
Internet Exproler に絶対的なアドバンテージがあります。
Netscape Communicator/Navigator では、ある程度解釈できますが、
選択されている文字セットに無い文字は表示できません。
Unicode の文字全てを表示させるには、
UTF-8 が選ばれていなければなりません。
この不備にページ作成者が妥協するか、
無視することになります。


なお、杉山さんのページは
Netscape 3 と IE 3 では読めません。
後者のページも、
Netscape 3 と IE 3 では韓国語部分が読めません。

なば [E-Mail] [HomePage] 2000/03/17(金) 10:15:31
こんにちは。
こちら、はじめて発言させていただきます。

日韓の混在に関しては、手前味噌ですが、
下のページが参考になれば幸いです。
http://www.turboclub.net/k-info/konzai.html

ちなみに、杉山さんが例としてあげられたページは、
IE4以上でないと、ハングルの部分は読めません。

でも、今までNetscape4でUTF-8をきちんと表示するには、
ユニコード用の専用フォントが必要だと聞き及んでいましたが、
杉山さんのページのように、FONT FACEとLANGを指定すれば、
可能なんですね。(ひょっとしてLANGだけで可能?)
勉強になりました。

ただ、UTF-8は、対応していないブラウザですと、
日本語部分ですら完全に文字化けしてしまいますので、
どうしても別個にユニコードを使っていないページも用意する必要がありますよね…。

ちなみに私のページでは、CGIでブラウザを判別して、
それぞれに適した混在法でHTMLを吐き出すようにしています。

ひみつ 2000/03/17(金) 12:02:25
>でも、今までNetscape4でUTF-8をきちんと表示するには、
>ユニコード用の専用フォントが必要だと聞き及んでいましたが、

伝統ある方法(謎)としては、やはり文字鏡ですかね。
http://www.mojikyo.gr.jp/

三原克大 [E-Mail] 2000/03/17(金) 12:41:09
> >でも、今までNetscape4でUTF-8をきちんと表示するには、
> >ユニコード用の専用フォントが必要だと聞き及んでいましたが、
> 伝統ある方法(謎)としては、やはり文字鏡ですかね。
> http://www.mojikyo.gr.jp/

Netscape 推奨 Bitstream Cyberbit フォント
Netscape Communicator の
リリースノートに紹介されています。
ftp://ftp-asjp.netscape.com/pub/communicator/extras/fonts/windows/

杉山 2000/03/17(金) 18:42:57
>ただし、Word 97 で HTML ドキュメントを作成するのは
>はっきり言って周囲の迷惑なので、
>別のソフトに乗り換えられるようお願いします。

私もWord97で作りたくないです。
Word97でutf-8のファイルを作ったあと、
メモ帳やワードパッドでHTMLをいじると
本文部分が文字化けしてしまうので。
よいソフトがあったらお教え下さい。
Win95で使えるものがいいのですが・・・。

ただ、これまでのみなさんのお話だと、ページ全体を
UNICODEで作る積極的な理由がなさそうに感じられます。

例として挙げたページの方は
メモ帳でもHTMLがいじれるので便利そうです。
なばさんのサイトにもサンプルがありました。
ハングルを入力すると
&#(番号の10進表記); に変換してくれるものが
どこかにないでしょうか?
韓国のWebサイトにありそうですが、
見つかりませんでした。

ひみつ 2000/03/17(金) 22:15:09
>ハングルを入力すると
>&#(番号の10進表記); に変換してくれるものが
>どこかにないでしょうか?
そういうものは知りませんが、www.unicode.orgへ行けば
文字番号表があるはず。本としても出版されてますし。

さだひろ 2000/03/17(金) 22:29:51
&#(番号の10進表記); は,数文字参照(numeric character references)というようですが,
数文字参照からUTF-8への変換ならFrontPage Express2.0でもできます.
しかし残念ながら,その逆はFPE2.0ではできません.

とりあえずPerl5なら,私の下手っぴいなコード(↓)でUTF-8から数文字参照への変換ができます.
http://homepage1.nifty.com/nomenclator/appendix/utf2ncr.txt
この場合,ハングルの文字列だけのファイルを作って変換してください(HTMLを変換すると,タグも含めてすべて変換してしまいます).

さだひろ 2000/03/18(土) 10:15:36
↑作成者として補足。一応,使い方は,拡張子txtをplに変えて,
perl utf2ncr.pl ファイル名。
簡単にやるには(一例),同じフォルダにplファイルと,変換したいファイルと,「perl utf2ncr.pl ファイル名」という内容のbatファイルを置いて,バッチファイルのアイコンを叩く。

Perlのことは「入門」にもありますから,そして,わからないことは
ここのラウンジなら訊けると思います。

Perlのインスト−ルは,APi522.exeをhttp://www.activestate.com/ActivePerl/download.htm
からダウンロードして,それを実行すればいいはず。

さだひろ 2000/03/18(土) 12:46:43
改造して,ASCIIは変換しないようにしました。
このほうがWordから出力されたHTML文書の変換が楽だと思います。

http://homepage1.nifty.com/nomenclator/appendix/utf2ncr_ascii.txt

なお,HTMLを変換すると,タグが変換されないので,IE4以上で普通に読めてしまいます。ですが,このときは仮名や漢字も数値文字参照に変換されていることにご注意下さい。

もっと改造して,Jcode.pmあたり(私は実はその使い方を知らないので勘違いしているかもしれません)を併用すれば,日本文字をSJISにして,ハングルを参照にするということもできるかもしれませんが...

なば [E-Mail] [HomePage] 2000/03/18(土) 20:03:56
ハングルのユニコード番号は、「カ」を44032番として、
普通は使わない文字まで、すべての子音・母音・パッチムの組み合わせが、
規則的に並んでいますので、簡単な式で計算することもできます。

すなわち、
子音:k=0, kk=1, n=2, ... , h=18
母音:a=0, ae=1, ya=2, ... , i=20
パッチム(二重も含め):なし=0, k=1, kk=2, ... , h=27
と、全部の字母に辞書の配列順に番号を割り当てて、

(子音) * 588 + (母音) * 28 + (パッチム) + 44032

で計算することができます。
例えば、夢の「クム」の文字でしたら、
kk=1, u=13, m=16ですので、1*588+13*28+16+44032=45000、
꿈で表示できます。

もっとも、数文字ならともかく、多いととてもやってられませんが…(^^;
私の場合、元のHTMLファイルには、{han guk}のように、ローマ字で書いておいて、
それをCGIで変換して出力するようにしています。

さだひろ 2000/03/18(土) 20:48:53
>ハングルのユニコード番号は、組み合わせが規則的に並んでいますので
そうだんったんですか。参考になりました。
そこでまたperlで遊んで見ました。
ハングル音節型文字の表(UTF-8)
http://homepage1.nifty.com/nomenclator/appendix/hangul.lzh (25.5kB)と,
それを出力させたperl codeです。
http://homepage1.nifty.com/nomenclator/appendix/make_table_uni_han.txt

杉山 2000/03/19(日) 00:42:45
[[解決]]
えっと、質問者ですけど、perlのこととかわかってないので
話についていけなくてすみません。

個人的なことを言いますと、
私はハングル入力をいつも2ボル式でやっていますので
2ボル式でキーボードをたたいて、それが数文字参照に
変換されたら嬉しいと思いました。

一応解決マークつけておきます。

さだひろ [E-Mail] 2000/03/19(日) 15:20:35
解決出てますが....
>キーボードをたたいて、それが数文字参照に変換されたら
Perlが難しそうと言うことなので(やってみれば簡単と思うけど)
JavaScriptで作って見ました。
http://homepage1.nifty.com/nomenclator/appendix/han_ncr.htm
win IE5.0ではちゃんと動くと思いますが(たぶん)。
バグがあったらメールでも下さい。

杉山 2000/03/20(月) 01:13:41
さだひろさん。
JavaScriptで作ったもの、拝見しました。ちょこちょこっと
ハングルを書きたい時、便利ですね。

さだひろ [E-Mail] 2000/03/24(金) 02:43:26
以前のhan_ncr.htmにはちょっとバグがありましたね。
まあそれはともかく,win/NN4.04でも読める日韓混在文書を作るには,
(1) Shift_JISと <font face="GulimChe">&#45033;</face>などで作ってしまう(ここまででwin/IE4以上に対応)。
(2) 秀丸でUTF-8にする(数値文字参照はそのまま)。
これでNN4.04でもハングルも読めて,かつ以後の編集も可能な(ただし秀丸)HTML文書になりました。

解説は http://homepage1.nifty.com/nomenclator/appendix/hangul.htm から。

[上に] [前に] [次に]