C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 旧文字も全角カタカナを半角カタカナに変換したい


(過去ログ 99 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■59030 / inTopicNo.1)  旧文字も全角カタカナを半角カタカナに変換したい
  
□投稿者/ ロック (9回)-(2011/05/09(Mon) 21:29:34)

分類:[C#] 

Visual Studio 2010 C#

全角カタカナを半角カタカナに変換する方法は見つかりました。

using Microsoft.VisualBasic;

Strings.StrConv(textBox1.Text, VbStrConv.Narrow, 0x0411);

しかしこれだと旧カタカナが変換されず全角のままになってしまいます。
今のところ変換されないのは「ヱ」「ヰ」「ヵ」「ヶ」だったと思います。
人の名前ではそこそこ「ヱ」が使われていたりします。
ネットで検索してもこれに対応した変換ルーチン等は見つかりませんでした。

やはり簡単には変換できないのでしょうか?
引用返信 編集キー/
■59031 / inTopicNo.2)  Re[1]: 旧文字も全角カタカナを半角カタカナに変換したい
□投稿者/ Hongliang (774回)-(2011/05/09(Mon) 22:06:10)
Shift_JIS にも Unicode にも、いわゆる半角カナの領域にそれらの文字は含まれていません。
ので、少なくとも可逆的な変換は不可能です。
引用返信 編集キー/
■59034 / inTopicNo.3)  Re[1]: 旧文字も全角カタカナを半角カタカナに変換したい
□投稿者/ shu (679回)-(2011/05/10(Tue) 07:44:30)
No59030 (ロック さん) に返信

Hongliangさんが言っていることと同じかもしれませんが、

そもそも「ヱ」「ヰ」「ヵ」「ヶ」の半角カナ文字がないよ。
『エ』『イ』『カ』『ケ』の半角文字はこれとは別ですよね。

ちなみにGraphicsへの描画だけなら
ScaleTransform(0.5,1)してDrawStringで半分の幅で描画できます。
引用返信 編集キー/
■59041 / inTopicNo.4)  Re[1]: 旧文字も全角カタカナを半角カタカナに変換したい
□投稿者/ 魔界の仮面弁士 (2165回)-(2011/05/10(Tue) 12:38:33)
2011/05/10(Tue) 14:07:27 編集(投稿者)
No59030 (ロック さん) に返信
> 人の名前ではそこそこ「ヱ」が使われていたりします。

もしかして行政データベースなどのように、正確な人名表記が
必要とされる状況なのでしょうか。だとしても、それらの文字は
どうしても半角で表さなければならないのでしょうか。

正確性をさほど重要視しないのであれば、文字を切り落とすか
別の文字(全角カナなど)で代用するというのも手かと思います。

# 個人的には、対日本用の個人情報系データベースにおいては、
# 読み仮名は全角カナで格納するようにしています。この場合、
# 表示上やデータ交換時には、意図的に半角化することもありますが、
# その場合はロックさん同様、Strings.StrConv を利用しています。


> しかしこれだと旧カタカナが変換されず全角のままになってしまいます。

たとえば小書きカナの「ァ」の半角版については、
 CP932       … A7
 EUC-JP      … 8EA7
 ISO-2022-JP … A7
 UTF-16      … FF67
 UTF-8       … EFBDA7
というバイナリで表現されます。

「ヱ」の半角版や「ヵ」の半角版というのを、どのようなデータに
置き換えたいのかを、具体的に提示できますでしょうか?


> しかしこれだと旧カタカナが変換されず全角のままになってしまいます。

既に結論が出ているかと思いますが、そもそも変換ルーチン以前に
『文字集合にそれらの文字が掲載されていない』ために、
変換することができない…という状況でしょうね。


> 今のところ変換されないのは「ヱ」「ヰ」「ヵ」「ヶ」だったと思います。

ちなみに、JIS や EUC の 2バイト半角カナコードを利用できる処理系では、
所謂『2バイト半角カナ』として、「ヱ」「ヰ」「ヵ」「ヶ」の半角版も
表示できる可能性があります。とはいっても、現在の Windows 環境で
これらの文字を利用できるわけではありませんけれども。

* FACTORIAN's factory ―“BASIC とその漢字コードについて”
http://www.kiwi-us.com/~ohta/pc88/kanji/



以下蛇足ネタ:利用頻度の低いひらがな/カタカナについて

* 二つの「え」の話〜『古言衣延辨』
http://www.akenotsuki.com/eyeben/
→ あ行の「え」、ヤ行の「エ」、わ行の「ゑ」、ワ行の「ヱ」と
 ア行の衣(e)な片仮名と、や行の江(ye)な平仮名の話。

* Unicode コンソーシアム ―“Unicode 6.0 : Kana Supplement”
http://unicode.org/charts/PDF/Unicode-6.0/U60-1B000.pdf
→ U+1B000 に "衣"系の片仮名 "KATAKANA LETTER ARCHAIC E" を収録。
→ U+1B001 に "江"系の平仮名 "HHIRAGANA LETTER ARCHAIC YE" を収録。

* Wikiepedia ―“住民基本台帳収録変体仮名”
http://p.tl/0_Co

* Wikiepedia ―“捨て仮名”
http://ja.wikipedia.org/wiki/%E6%8D%A8%E3%81%A6%E4%BB%AE%E5%90%8D

* Wikiepedia ―“アイヌ語仮名”
http://p.tl/Jd5N
→ Unicode 3.2 および JIS X 0213:2000 に収録。

引用返信 編集キー/
■59049 / inTopicNo.5)  Re[2]: 旧文字も全角カタカナを半角カタカナに変換したい
□投稿者/ ロック (10回)-(2011/05/10(Tue) 15:23:50)
一括レスですいません。

魔界の仮面弁士さんのおっしゃるとおり正確な人名表記が理想的なのですが協議した結果、
こちらへデータが来る前に加工してもらい、こちらに来たタイミングではStrings.StrConvで問題ないように仕様変更することになりました。

みなさん、ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -