ホーム > WWWページ作成について > Jcode.pmをWindows XPでコンパイルする

Jcode.pmをWindows XPでコンパイルする


2008.8.9 高橋 誠

 Jcode.pm - jcode.pl の後継が提供されています。性能を確保するために、XSモジュールというのが追加されました。Windows用のロードは提供されず、ソースのみの提供となっています。これをMicrosoft Visual C++ 2008 Express Editionでコンパイルしたので報告します。また、コンパイルしたロードモジュールを提供します。

目次

変換テーブルについて

 Jcode.pmはUnicode Consortiumが1994年に提供したJISコードとunicodeの対応表に、ほぼ、基づいてコード変換しています。このコード変換はUnicode Consortium自身が認めているように、Windowsの実装とは食い違っています。例えば、Unicode 5.1によると、U+301Cは、

もともとJIS C 6226-1978の句点1-33に対応させるように意図されていたが、JISやいくつかの実装とは異なっている。

This character was encoded to match JIS C 6226-1978 1-33 “wave dash”. The JIS standards and some industry practice disagree in mapping.

とあります。そうなら変換テーブルも更新すればいいようなものですが、何か訳の分からない理屈があるようです。次の表の通り、更新されているプログラムはみな、1994年の変換表を使わずに変換しています。
 また、~(07/14)はuriによく使われていますが、1994年の変換テーブルで変換するとU+203Eになります。これではuriとして不正になってしまいます。

主なプログラムの日本語コードとunicodeの対応
区点 文字 FrontPage Express/
xyzzy/
Aprotool TM Editor/
JVim/
EmEditor/
Netscape Composer 4.72/
Mozilla/
秀丸エディタ
Netscape Composer 4.7以前/
Meadow
Uniedit
05/12 \ U+005C U+00A5 U+005C
07/14 ~ U+007E U+203E U+007E
01-32 \ U+FF3C U+005C U+005C
01-33 ~ U+FF5E U+301C U+301C
01-34 ∥ U+2225 U+2016 U+2016
01-61 - U+FF0D U+2212 U+2212
01-81 ¢ U+FFE0 U+00A2 U+00A2
01-82 £ U+FFE1 U+00A3 U+00A3
02-44 ¬ U+FFE2 U+00AC U+00AC

 Jcode.pmのコード変換テーブルをよく使われる対応にあわせるため、Jcode-0.88.zipをc:\に「ディレクトリ付き」で解凍してできる、c:\Jcode-0.88\unicode\euc2uni.hとc:\Jcode-0.88\unicode\uni2euc.hに次の変更を行いました。

 また、JIS X 0212とのマッピングについても、2-23チルドで異なっています。2-23をU+FF5Eにすると01-33と重なるので、Spacing Modifier LettersのSmall Tilde:U+02DCに変更しました。

eucからunicodeへの変換テーブル(euc2uni.h)の改造
句点 文字euc変更前変更後
文字名前unicode文字名前unicode
JIS X 0201
05/12\0x5c¥Yen SignU+00A5\Reverse SolidusU+005C
07/14~0x7e‾OverlineU+203E~TildeU+007E
JIS X 0208
01-33~0xa1c1〜Wave DashU+301C~Fullwidth TildeU+FF5E
01-34∥0xa1c2‖Double Vertical LineU+2016∥Parallel ToU+2225
01-61-0xa1dd−Minus SignU+2212-Fullwidth Hyphen-MinusU+FF0D
01-81¢0xa1f1¢ Cent SignU+00A2¢Fullwidth Cent SignU+FFE0
01-82£0xa1f2£ Pound SignU+00A3£Fullwidth Pound SignU+FFE1
02-44¬0xa2cc¬Fullwidth Not SignU+00AC¬Not SignU+FFE2
JIS X 0212
02-23˜0x8fa2b7~ TildeU+007E˜Small Tilde(*1)U+02DC
unicodeからeucへの変換テーブル(uni2euc.h)の改造
unicode文字名前変更前変更後
euc句点文字euc句点文字
U+02DC˜Small Tilde(*1)0x8fa2b702-23˜
U+2225∥Parallel To0xa1c201-34∥
U+FF0D-Fullwidth Hyphen-Minus0xa1dd01-61-
U+FF5E~Fullwidth Tilde0xa1c101-33~
U+FFE0¢Fullwidth Cent Sign0xa1f101-81¢
U+FFE1£Fullwidth Pound Sign0xa1f201-82£
U+FFE2¬Fullwidth Not Sign0xa2cc02-44¬

註1 CP932では、U+FF5Eにマッピングしていますが、01-33と衝突するので、Spacing Modifier LettersのSmall Tilde:U+02DCに変更しました。

追加の変換

 Jcode-2.03で追加された次の変換も追加しました。

eucからunicodeへの変換テーブル(euc2uni.h)の改造
文字eucunicode
①xada1U+2460
②xada2U+2461
③xada3U+2462
④xada4U+2463
⑤xada5U+2464
⑥xada6U+2465
⑦xada7U+2466
⑧xada8U+2467
⑨xada9U+2468
⑩xadaaU+2469
⑪xadabU+246A
⑫xadacU+246B
⑬xadadU+246C
⑭xadaeU+246D
⑮xadafU+246E
⑯xadb0U+246F
⑰xadb1U+2470
⑱xadb2U+2471
⑲xadb3U+2472
⑳xadb4U+2473
Ⅰxadb5U+2160
Ⅱxadb6U+2161
Ⅲxadb7U+2162
Ⅳxadb8U+2163
Ⅴxadb9U+2164
ⅥxadbaU+2165
ⅦxadbbU+2166
ⅧxadbcU+2167
ⅨxadbdU+2168
ⅩxadbeU+2169
㍉xadc0U+3349
㌔xadc1U+3314
㌢xadc2U+3322
㍍xadc3U+334D
㌘xadc4U+3318
㌧xadc5U+3327
㌃xadc6U+3303
㌶xadc7U+3336
㍑xadc8U+3351
㍗xadc9U+3357
㌍xadcaU+330D
㌦xadcbU+3326
㌣xadccU+3323
㌫xadcdU+332B
㍊xadceU+334A
㌻xadcfU+333B
㎜xadd0U+339C
㎝xadd1U+339D
㎞xadd2U+339E
㎎xadd3U+338E
㎏xadd4U+338F
㏄xadd5U+33C4
㎡xadd6U+33A1
㍻xaddfU+337B
〝xade0U+301D
〟xade1U+301F
№xade2U+2116
㏍xade3U+33CD
℡xade4U+2121
㊤xade5U+32A4
㊥xade6U+32A5
㊦xade7U+32A6
㊧xade8U+32A7
㊨xade9U+32A8
㈱xadeaU+3231
㈲xadebU+3232
㈹xadecU+3239
㍾xadedU+337E
㍽xadeeU+337D
㍼xadefU+337C
unicodeからeucへの変換テーブル(uni2euc.h)の改造
文字unicodeeuc
№U+2116xade2
℡U+2121xade4
ⅠU+2160xadb5
ⅡU+2161xadb6
ⅢU+2162xadb7
ⅣU+2163xadb8
ⅤU+2164xadb9
ⅥU+2165xadba
ⅦU+2166xadbb
ⅧU+2167xadbc
ⅨU+2168xadbd
ⅩU+2169xadbe
①U+2460xada1
②U+2461xada2
③U+2462xada3
④U+2463xada4
⑤U+2464xada5
⑥U+2465xada6
⑦U+2466xada7
⑧U+2467xada8
⑨U+2468xada9
⑩U+2469xadaa
⑪U+246Axadab
⑫U+246Bxadac
⑬U+246Cxadad
⑭U+246Dxadae
⑮U+246Exadaf
⑯U+246Fxadb0
⑰U+2470xadb1
⑱U+2471xadb2
⑲U+2472xadb3
⑳U+2473xadb4
〝U+301Dxade0
〟U+301Fxade1
㈱U+3231xadea
㈲U+3232xadeb
㈹U+3239xadec
㊤U+32A4xade5
㊥U+32A5xade6
㊦U+32A6xade7
㊧U+32A7xade8
㊨U+32A8xade9
㌃U+3303xadc6
㌍U+330Dxadca
㌔U+3314xadc1
㌘U+3318xadc4
㌢U+3322xadc2
㌣U+3323xadcc
㌦U+3326xadcb
㌧U+3327xadc5
㌫U+332Bxadcd
㌶U+3336xadc7
㌻U+333Bxadcf
㍉U+3349xadc0
㍊U+334Axadce
㍍U+334Dxadc3
㍑U+3351xadc8
㍗U+3357xadc9
㍻U+337Bxaddf
㍼U+337Cxadef
㍽U+337Dxadee
㍾U+337Exaded
㎎U+338Exadd3
㎏U+338Fxadd4
㎜U+339Cxadd0
㎝U+339Dxadd1
㎞U+339Exadd2
㎡U+33A1xadd6
㏄U+33C4xadd5
㏍U+33CDxade3

さらに追加の変換

 CP932の変換も追加しました。

eucからunicodeへの変換テーブル(euc2uni.h)の改造
文字eucunicode
纊0xf9a1U+7E8A
褜0xf9a2U+891C
鍈0xf9a3U+9348
銈0xf9a4U+9288
蓜0xf9a5U+84DC
俉0xf9a6U+4FC9
炻0xf9a7U+70BB
昱0xf9a8U+6631
棈0xf9a9U+68C8
鋹0xf9aaU+92F9
曻0xf9abU+66FB
彅0xf9acU+5F45
丨0xf9adU+4E28
仡0xf9aeU+4EE1
仼0xf9afU+4EFC
伀0xf9b0U+4F00
伃0xf9b1U+4F03
伹0xf9b2U+4F39
佖0xf9b3U+4F56
侒0xf9b4U+4F92
侊0xf9b5U+4F8A
侚0xf9b6U+4F9A
侔0xf9b7U+4F94
俍0xf9b8U+4FCD
偀0xf9b9U+5040
倢0xf9baU+5022
俿0xf9bbU+4FFF
倞0xf9bcU+501E
偆0xf9bdU+5046
偰0xf9beU+5070
偂0xf9bfU+5042
傔0xf9c0U+5094
僴0xf9c1U+50F4
僘0xf9c2U+50D8
兊0xf9c3U+514A
兤0xf9c4U+5164
冝0xf9c5U+519D
冾0xf9c6U+51BE
凬0xf9c7U+51EC
刕0xf9c8U+5215
劜0xf9c9U+529C
劦0xf9caU+52A6
勀0xf9cbU+52C0
勛0xf9ccU+52DB
匀0xf9cdU+5300
匇0xf9ceU+5307
匤0xf9cfU+5324
卲0xf9d0U+5372
厓0xf9d1U+5393
厲0xf9d2U+53B2
叝0xf9d3U+53DD
﨎0xf9d4U+FA0E
咜0xf9d5U+549C
咊0xf9d6U+548A
咩0xf9d7U+54A9
哿0xf9d8U+54FF
喆0xf9d9U+5586
坙0xf9daU+5759
坥0xf9dbU+5765
垬0xf9dcU+57AC
埈0xf9ddU+57C8
埇0xf9deU+57C7
﨏0xf9dfU+FA0F
塚0xf9e0U+FA10
增0xf9e1U+589E
墲0xf9e2U+58B2
夋0xf9e3U+590B
奓0xf9e4U+5953
奛0xf9e5U+595B
奝0xf9e6U+595D
奣0xf9e7U+5963
妤0xf9e8U+59A4
妺0xf9e9U+59BA
孖0xf9eaU+5B56
寀0xf9ebU+5BC0
甯0xf9ecU+752F
寘0xf9edU+5BD8
寬0xf9eeU+5BEC
尞0xf9efU+5C1E
岦0xf9f0U+5CA6
岺0xf9f1U+5CBA
峵0xf9f2U+5CF5
崧0xf9f3U+5D27
嵓0xf9f4U+5D53
﨑0xf9f5U+FA11
嵂0xf9f6U+5D42
嵭0xf9f7U+5D6D
嶸0xf9f8U+5DB8
嶹0xf9f9U+5DB9
巐0xf9faU+5DD0
弡0xf9fbU+5F21
弴0xf9fcU+5F34
彧0xf9fdU+5F67
德0xf9feU+5FB7
忞0xfaa1U+5FDE
恝0xfaa2U+605D
悅0xfaa3U+6085
悊0xfaa4U+608A
惞0xfaa5U+60DE
惕0xfaa6U+60D5
愠0xfaa7U+6120
惲0xfaa8U+60F2
愑0xfaa9U+6111
愷0xfaaaU+6137
愰0xfaabU+6130
憘0xfaacU+6198
戓0xfaadU+6213
抦0xfaaeU+62A6
揵0xfaafU+63F5
摠0xfab0U+6460
撝0xfab1U+649D
擎0xfab2U+64CE
敎0xfab3U+654E
昀0xfab4U+6600
昕0xfab5U+6615
昻0xfab6U+663B
昉0xfab7U+6609
昮0xfab8U+662E
昞0xfab9U+661E
昤0xfabaU+6624
晥0xfabbU+6665
晗0xfabcU+6657
晙0xfabdU+6659
晴0xfabeU+FA12
晳0xfabfU+6673
暙0xfac0U+6699
暠0xfac1U+66A0
暲0xfac2U+66B2
暿0xfac3U+66BF
曺0xfac4U+66FA
朎0xfac5U+670E
朗0xfac6U+F929
杦0xfac7U+6766
枻0xfac8U+67BB
桒0xfac9U+6852
柀0xfacaU+67C0
栁0xfacbU+6801
桄0xfaccU+6844
棏0xfacdU+68CF
﨓0xfaceU+FA13
楨0xfacfU+6968
﨔0xfad0U+FA14
榘0xfad1U+6998
槢0xfad2U+69E2
樰0xfad3U+6A30
橫0xfad4U+6A6B
橆0xfad5U+6A46
橳0xfad6U+6A73
橾0xfad7U+6A7E
櫢0xfad8U+6AE2
櫤0xfad9U+6AE4
毖0xfadaU+6BD6
氿0xfadbU+6C3F
汜0xfadcU+6C5C
沆0xfaddU+6C86
汯0xfadeU+6C6F
泚0xfadfU+6CDA
洄0xfae0U+6D04
涇0xfae1U+6D87
浯0xfae2U+6D6F
涖0xfae3U+6D96
涬0xfae4U+6DAC
淏0xfae5U+6DCF
淸0xfae6U+6DF8
淲0xfae7U+6DF2
淼0xfae8U+6DFC
渹0xfae9U+6E39
湜0xfaeaU+6E5C
渧0xfaebU+6E27
渼0xfaecU+6E3C
溿0xfaedU+6EBF
澈0xfaeeU+6F88
澵0xfaefU+6FB5
濵0xfaf0U+6FF5
瀅0xfaf1U+7005
瀇0xfaf2U+7007
瀨0xfaf3U+7028
炅0xfaf4U+7085
炫0xfaf5U+70AB
焏0xfaf6U+710F
焄0xfaf7U+7104
煜0xfaf8U+715C
煆0xfaf9U+7146
煇0xfafaU+7147
凞0xfafbU+FA15
燁0xfafcU+71C1
燾0xfafdU+71FE
犱0xfafeU+72B1
犾0xfba1U+72BE
猤0xfba2U+7324
猪0xfba3U+FA16
獷0xfba4U+7377
玽0xfba5U+73BD
珉0xfba6U+73C9
珖0xfba7U+73D6
珣0xfba8U+73E3
珒0xfba9U+73D2
琇0xfbaaU+7407
珵0xfbabU+73F5
琦0xfbacU+7426
琪0xfbadU+742A
琩0xfbaeU+7429
琮0xfbafU+742E
瑢0xfbb0U+7462
璉0xfbb1U+7489
璟0xfbb2U+749F
甁0xfbb3U+7501
畯0xfbb4U+756F
皂0xfbb5U+7682
皜0xfbb6U+769C
皞0xfbb7U+769E
皛0xfbb8U+769B
皦0xfbb9U+76A6
益0xfbbaU+FA17
睆0xfbbbU+7746
劯0xfbbcU+52AF
砡0xfbbdU+7821
硎0xfbbeU+784E
硤0xfbbfU+7864
硺0xfbc0U+787A
礰0xfbc1U+7930
礼0xfbc2U+FA18
神0xfbc3U+FA19
祥0xfbc4U+FA1A
禔0xfbc5U+7994
福0xfbc6U+FA1B
禛0xfbc7U+799B
竑0xfbc8U+7AD1
竧0xfbc9U+7AE7
靖0xfbcaU+FA1C
竫0xfbcbU+7AEB
箞0xfbccU+7B9E
精0xfbcdU+FA1D
絈0xfbceU+7D48
絜0xfbcfU+7D5C
綷0xfbd0U+7DB7
綠0xfbd1U+7DA0
緖0xfbd2U+7DD6
繒0xfbd3U+7E52
罇0xfbd4U+7F47
羡0xfbd5U+7FA1
羽0xfbd6U+FA1E
茁0xfbd7U+8301
荢0xfbd8U+8362
荿0xfbd9U+837F
菇0xfbdaU+83C7
菶0xfbdbU+83F6
葈0xfbdcU+8448
蒴0xfbddU+84B4
蕓0xfbdeU+8553
蕙0xfbdfU+8559
蕫0xfbe0U+856B
﨟0xfbe1U+FA1F
薰0xfbe2U+85B0
蘒0xfbe3U+FA20
﨡0xfbe4U+FA21
蠇0xfbe5U+8807
裵0xfbe6U+88F5
訒0xfbe7U+8A12
訷0xfbe8U+8A37
詹0xfbe9U+8A79
誧0xfbeaU+8AA7
誾0xfbebU+8ABE
諟0xfbecU+8ADF
諸0xfbedU+FA22
諶0xfbeeU+8AF6
譓0xfbefU+8B53
譿0xfbf0U+8B7F
賰0xfbf1U+8CF0
賴0xfbf2U+8CF4
贒0xfbf3U+8D12
赶0xfbf4U+8D76
﨣0xfbf5U+FA23
軏0xfbf6U+8ECF
﨤0xfbf7U+FA24
逸0xfbf8U+FA25
遧0xfbf9U+9067
郞0xfbfaU+90DE
都0xfbfbU+FA26
鄕0xfbfcU+9115
鄧0xfbfdU+9127
釚0xfbfeU+91DA
釗0xfca1U+91D7
釞0xfca2U+91DE
釭0xfca3U+91ED
釮0xfca4U+91EE
釤0xfca5U+91E4
釥0xfca6U+91E5
鈆0xfca7U+9206
鈐0xfca8U+9210
鈊0xfca9U+920A
鈺0xfcaaU+923A
鉀0xfcabU+9240
鈼0xfcacU+923C
鉎0xfcadU+924E
鉙0xfcaeU+9259
鉑0xfcafU+9251
鈹0xfcb0U+9239
鉧0xfcb1U+9267
銧0xfcb2U+92A7
鉷0xfcb3U+9277
鉸0xfcb4U+9278
鋧0xfcb5U+92E7
鋗0xfcb6U+92D7
鋙0xfcb7U+92D9
鋐0xfcb8U+92D0
﨧0xfcb9U+FA27
鋕0xfcbaU+92D5
鋠0xfcbbU+92E0
鋓0xfcbcU+92D3
錥0xfcbdU+9325
錡0xfcbeU+9321
鋻0xfcbfU+92FB
﨨0xfcc0U+FA28
錞0xfcc1U+931E
鋿0xfcc2U+92FF
錝0xfcc3U+931D
錂0xfcc4U+9302
鍰0xfcc5U+9370
鍗0xfcc6U+9357
鎤0xfcc7U+93A4
鏆0xfcc8U+93C6
鏞0xfcc9U+93DE
鏸0xfccaU+93F8
鐱0xfccbU+9431
鑅0xfcccU+9445
鑈0xfccdU+9448
閒0xfcceU+9592
隆0xfccfU+F9DC
﨩0xfcd0U+FA29
隝0xfcd1U+969D
隯0xfcd2U+96AF
霳0xfcd3U+9733
霻0xfcd4U+973B
靃0xfcd5U+9743
靍0xfcd6U+974D
靏0xfcd7U+974F
靑0xfcd8U+9751
靕0xfcd9U+9755
顗0xfcdaU+9857
顥0xfcdbU+9865
飯0xfcdcU+FA2A
飼0xfcddU+FA2B
餧0xfcdeU+9927
館0xfcdfU+FA2C
馞0xfce0U+999E
驎0xfce1U+9A4E
髙0xfce2U+9AD9
髜0xfce3U+9ADC
魵0xfce4U+9B75
魲0xfce5U+9B72
鮏0xfce6U+9B8F
鮱0xfce7U+9BB1
鮻0xfce8U+9BBB
鰀0xfce9U+9C00
鵰0xfceaU+9D70
鵫0xfcebU+9D6B
鶴0xfcecU+FA2D
鸙0xfcedU+9E19
黑0xfceeU+9ED1
ⅰ0xfcf1U+2170
ⅱ0xfcf2U+2171
ⅲ0xfcf3U+2172
ⅳ0xfcf4U+2173
ⅴ0xfcf5U+2174
ⅵ0xfcf6U+2175
ⅶ0xfcf7U+2176
ⅷ0xfcf8U+2177
ⅸ0xfcf9U+2178
ⅹ0xfcfaU+2179
¬0xfcfbU+FFE2
¦0xfcfcU+FFE4
'0xfcfdU+FF07
"0xfcfeU+FF02
unicodeからeucへの変換テーブル(uni2euc.h)の改造
文字unicodeeuc
ⅰU+21700xfcf1
ⅱU+21710xfcf2
ⅲU+21720xfcf3
ⅳU+21730xfcf4
ⅴU+21740xfcf5
ⅵU+21750xfcf6
ⅶU+21760xfcf7
ⅷU+21770xfcf8
ⅸU+21780xfcf9
ⅹU+21790xfcfa
丨U+4E280xf9ad
仡U+4EE10xf9ae
仼U+4EFC0xf9af
伀U+4F000xf9b0
伃U+4F030xf9b1
伹U+4F390xf9b2
佖U+4F560xf9b3
侊U+4F8A0xf9b5
侒U+4F920xf9b4
侔U+4F940xf9b7
侚U+4F9A0xf9b6
俉U+4FC90xf9a6
俍U+4FCD0xf9b8
俿U+4FFF0xf9bb
倞U+501E0xf9bc
倢U+50220xf9ba
偀U+50400xf9b9
偂U+50420xf9bf
偆U+50460xf9bd
偰U+50700xf9be
傔U+50940xf9c0
僘U+50D80xf9c2
僴U+50F40xf9c1
兊U+514A0xf9c3
兤U+51640xf9c4
冝U+519D0xf9c5
冾U+51BE0xf9c6
凬U+51EC0xf9c7
刕U+52150xf9c8
劜U+529C0xf9c9
劦U+52A60xf9ca
劯U+52AF0xfbbc
勀U+52C00xf9cb
勛U+52DB0xf9cc
匀U+53000xf9cd
匇U+53070xf9ce
匤U+53240xf9cf
卲U+53720xf9d0
厓U+53930xf9d1
厲U+53B20xf9d2
叝U+53DD0xf9d3
咊U+548A0xf9d6
咜U+549C0xf9d5
咩U+54A90xf9d7
哿U+54FF0xf9d8
喆U+55860xf9d9
坙U+57590xf9da
坥U+57650xf9db
垬U+57AC0xf9dc
埇U+57C70xf9de
埈U+57C80xf9dd
增U+589E0xf9e1
墲U+58B20xf9e2
夋U+590B0xf9e3
奓U+59530xf9e4
奛U+595B0xf9e5
奝U+595D0xf9e6
奣U+59630xf9e7
妤U+59A40xf9e8
妺U+59BA0xf9e9
孖U+5B560xf9ea
寀U+5BC00xf9eb
寘U+5BD80xf9ed
寬U+5BEC0xf9ee
尞U+5C1E0xf9ef
岦U+5CA60xf9f0
岺U+5CBA0xf9f1
峵U+5CF50xf9f2
崧U+5D270xf9f3
嵂U+5D420xf9f6
嵓U+5D530xf9f4
嵭U+5D6D0xf9f7
嶸U+5DB80xf9f8
嶹U+5DB90xf9f9
巐U+5DD00xf9fa
弡U+5F210xf9fb
弴U+5F340xf9fc
彅U+5F450xf9ac
彧U+5F670xf9fd
德U+5FB70xf9fe
忞U+5FDE0xfaa1
恝U+605D0xfaa2
悅U+60850xfaa3
悊U+608A0xfaa4
惕U+60D50xfaa6
惞U+60DE0xfaa5
惲U+60F20xfaa8
愑U+61110xfaa9
愠U+61200xfaa7
愰U+61300xfaab
愷U+61370xfaaa
憘U+61980xfaac
戓U+62130xfaad
抦U+62A60xfaae
揵U+63F50xfaaf
摠U+64600xfab0
撝U+649D0xfab1
擎U+64CE0xfab2
敎U+654E0xfab3
昀U+66000xfab4
昉U+66090xfab7
昕U+66150xfab5
昞U+661E0xfab9
昤U+66240xfaba
昮U+662E0xfab8
昱U+66310xf9a8
昻U+663B0xfab6
晗U+66570xfabc
晙U+66590xfabd
晥U+66650xfabb
晳U+66730xfabf
暙U+66990xfac0
暠U+66A00xfac1
暲U+66B20xfac2
暿U+66BF0xfac3
曺U+66FA0xfac4
曻U+66FB0xf9ab
朎U+670E0xfac5
杦U+67660xfac7
枻U+67BB0xfac8
柀U+67C00xfaca
栁U+68010xfacb
桄U+68440xfacc
桒U+68520xfac9
棈U+68C80xf9a9
棏U+68CF0xfacd
楨U+69680xfacf
榘U+69980xfad1
槢U+69E20xfad2
樰U+6A300xfad3
橆U+6A460xfad5
橫U+6A6B0xfad4
橳U+6A730xfad6
橾U+6A7E0xfad7
櫢U+6AE20xfad8
櫤U+6AE40xfad9
毖U+6BD60xfada
氿U+6C3F0xfadb
汜U+6C5C0xfadc
汯U+6C6F0xfade
沆U+6C860xfadd
泚U+6CDA0xfadf
洄U+6D040xfae0
浯U+6D6F0xfae2
涇U+6D870xfae1
涖U+6D960xfae3
涬U+6DAC0xfae4
淏U+6DCF0xfae5
淲U+6DF20xfae7
淸U+6DF80xfae6
淼U+6DFC0xfae8
渧U+6E270xfaeb
渹U+6E390xfae9
渼U+6E3C0xfaec
湜U+6E5C0xfaea
溿U+6EBF0xfaed
澈U+6F880xfaee
澵U+6FB50xfaef
濵U+6FF50xfaf0
瀅U+70050xfaf1
瀇U+70070xfaf2
瀨U+70280xfaf3
炅U+70850xfaf4
炫U+70AB0xfaf5
炻U+70BB0xf9a7
焄U+71040xfaf7
焏U+710F0xfaf6
煆U+71460xfaf9
煇U+71470xfafa
煜U+715C0xfaf8
燁U+71C10xfafc
燾U+71FE0xfafd
犱U+72B10xfafe
犾U+72BE0xfba1
猤U+73240xfba2
獷U+73770xfba4
玽U+73BD0xfba5
珉U+73C90xfba6
珒U+73D20xfba9
珖U+73D60xfba7
珣U+73E30xfba8
珵U+73F50xfbab
琇U+74070xfbaa
琦U+74260xfbac
琩U+74290xfbae
琪U+742A0xfbad
琮U+742E0xfbaf
瑢U+74620xfbb0
璉U+74890xfbb1
璟U+749F0xfbb2
甁U+75010xfbb3
甯U+752F0xf9ec
畯U+756F0xfbb4
皂U+76820xfbb5
皛U+769B0xfbb8
皜U+769C0xfbb6
皞U+769E0xfbb7
皦U+76A60xfbb9
睆U+77460xfbbb
砡U+78210xfbbd
硎U+784E0xfbbe
硤U+78640xfbbf
硺U+787A0xfbc0
礰U+79300xfbc1
禔U+79940xfbc5
禛U+799B0xfbc7
竑U+7AD10xfbc8
竧U+7AE70xfbc9
竫U+7AEB0xfbcb
箞U+7B9E0xfbcc
絈U+7D480xfbce
絜U+7D5C0xfbcf
綠U+7DA00xfbd1
綷U+7DB70xfbd0
緖U+7DD60xfbd2
繒U+7E520xfbd3
纊U+7E8A0xf9a1
罇U+7F470xfbd4
羡U+7FA10xfbd5
茁U+83010xfbd7
荢U+83620xfbd8
荿U+837F0xfbd9
菇U+83C70xfbda
菶U+83F60xfbdb
葈U+84480xfbdc
蒴U+84B40xfbdd
蓜U+84DC0xf9a5
蕓U+85530xfbde
蕙U+85590xfbdf
蕫U+856B0xfbe0
薰U+85B00xfbe2
蠇U+88070xfbe5
裵U+88F50xfbe6
褜U+891C0xf9a2
訒U+8A120xfbe7
訷U+8A370xfbe8
詹U+8A790xfbe9
誧U+8AA70xfbea
誾U+8ABE0xfbeb
諟U+8ADF0xfbec
諶U+8AF60xfbee
譓U+8B530xfbef
譿U+8B7F0xfbf0
賰U+8CF00xfbf1
賴U+8CF40xfbf2
贒U+8D120xfbf3
赶U+8D760xfbf4
軏U+8ECF0xfbf6
遧U+90670xfbf9
郞U+90DE0xfbfa
鄕U+91150xfbfc
鄧U+91270xfbfd
釗U+91D70xfca1
釚U+91DA0xfbfe
釞U+91DE0xfca2
釤U+91E40xfca5
釥U+91E50xfca6
釭U+91ED0xfca3
釮U+91EE0xfca4
鈆U+92060xfca7
鈊U+920A0xfca9
鈐U+92100xfca8
鈹U+92390xfcb0
鈺U+923A0xfcaa
鈼U+923C0xfcac
鉀U+92400xfcab
鉎U+924E0xfcad
鉑U+92510xfcaf
鉙U+92590xfcae
鉧U+92670xfcb1
鉷U+92770xfcb3
鉸U+92780xfcb4
銈U+92880xf9a4
銧U+92A70xfcb2
鋐U+92D00xfcb8
鋓U+92D30xfcbc
鋕U+92D50xfcba
鋗U+92D70xfcb6
鋙U+92D90xfcb7
鋠U+92E00xfcbb
鋧U+92E70xfcb5
鋹U+92F90xf9aa
鋻U+92FB0xfcbf
鋿U+92FF0xfcc2
錂U+93020xfcc4
錝U+931D0xfcc3
錞U+931E0xfcc1
錡U+93210xfcbe
錥U+93250xfcbd
鍈U+93480xf9a3
鍗U+93570xfcc6
鍰U+93700xfcc5
鎤U+93A40xfcc7
鏆U+93C60xfcc8
鏞U+93DE0xfcc9
鏸U+93F80xfcca
鐱U+94310xfccb
鑅U+94450xfccc
鑈U+94480xfccd
閒U+95920xfcce
隝U+969D0xfcd1
隯U+96AF0xfcd2
霳U+97330xfcd3
霻U+973B0xfcd4
靃U+97430xfcd5
靍U+974D0xfcd6
靏U+974F0xfcd7
靑U+97510xfcd8
靕U+97550xfcd9
顗U+98570xfcda
顥U+98650xfcdb
餧U+99270xfcde
馞U+999E0xfce0
驎U+9A4E0xfce1
髙U+9AD90xfce2
髜U+9ADC0xfce3
魲U+9B720xfce5
魵U+9B750xfce4
鮏U+9B8F0xfce6
鮱U+9BB10xfce7
鮻U+9BBB0xfce8
鰀U+9C000xfce9
鵫U+9D6B0xfceb
鵰U+9D700xfcea
鸙U+9E190xfced
黑U+9ED10xfcee
朗U+F9290xfac6
隆U+F9DC0xfccf
﨎U+FA0E0xf9d4
﨏U+FA0F0xf9df
塚U+FA100xf9e0
﨑U+FA110xf9f5
晴U+FA120xfabe
﨓U+FA130xface
﨔U+FA140xfad0
凞U+FA150xfafb
猪U+FA160xfba3
益U+FA170xfbba
礼U+FA180xfbc2
神U+FA190xfbc3
祥U+FA1A0xfbc4
福U+FA1B0xfbc6
靖U+FA1C0xfbca
精U+FA1D0xfbcd
羽U+FA1E0xfbd6
﨟U+FA1F0xfbe1
蘒U+FA200xfbe3
﨡U+FA210xfbe4
諸U+FA220xfbed
﨣U+FA230xfbf5
﨤U+FA240xfbf7
逸U+FA250xfbf8
都U+FA260xfbfb
﨧U+FA270xfcb9
﨨U+FA280xfcc0
﨩U+FA290xfcd0
飯U+FA2A0xfcdc
飼U+FA2B0xfcdd
館U+FA2C0xfcdf
鶴U+FA2D0xfcec
"U+FF020xfcfe
'U+FF070xfcfd
¦U+FFE40xfcfc

コンパイル

 Microsoft Visual C++ 2008 Express Editionをインストールして、(プログラム)-(アクセサリ)-(コマンドプロンプト)で、Visual C++をインストールしたC:\Program Files\Microsoft Visual Studio 9.0\VC\binに移動します。ここで、vcvars32.batを実行して環境変数を設定します。
C:>cd \Program Files\Microsoft Visual Studio 9.0\VC\bin
C:\Program Files\Microsoft Visual Studio\VC98\bin>vcvars32.bat
Setting environment for using Microsoft Visual Studio 2008 X86 tools.
 次にjcode.pmを解凍したフォルダに移動し、perl makefile.plを実行します。
C:\Program Files\Microsoft Visual Studio\VC98\bin>cd \
C:\>cd jcode-0.88
C:\jcode-0.88>perl makefile.pl
Checking if your kit is complete...
Looks good
Writing Makefile for Jcode::Unicode
Writing Makefile for Jcode
となれば、コンパイルの準備ができています。ここで、nmakeを実行すればコンパイルできるはずなのですが、
Microsoft(R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.

        nmake -f Makefile all -nologo
        cl -c    -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1    -DVERSION=\"1.03\"  -DXS_VERSION=\"1.03\"  "-IC:\Perl\lib\CORE"   Unicode.c
Unicode.c
c:\jcode-0.88\unicode\uni.c(31) : warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\string.h(157) :'strncpy' の宣言を確認してください。
c:\jcode-0.88\unicode\uni.c(86) : warning C4244: '=' : 'unsigned long' から 'unsigned char' への変換です。データが失われる可能性があります。
c:\jcode-0.88\unicode\uni.c(89) : warning C4244: '=' : 'unsigned long' から 'unsigned char' への変換です。データが失われる可能性があります。
c:\jcode-0.88\unicode\uni.c(93) : warning C4244: '=' : 'unsigned long' から 'unsigned char' への変換です。データが失われる可能性があります。
c:\jcode-0.88\unicode\uni.c(168) : warning C4244: '=' : 'unsigned short' から 'unsigned char' への変換です。データが失われる可能性があります。
c:\jcode-0.88\unicode\uni.c(213) : warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation,use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\string.h(157) :'strncpy' の宣言を確認してください。
Unicode.c(44) : warning C4101: 'RETVAL' : ローカル変数は 1 度も使われていません。
Unicode.c(75) : warning C4101: 'RETVAL' : ローカル変数は 1 度も使われていません。
Unicode.c(106) : warning C4101: 'RETVAL' : ローカル変数は 1 度も使われていません。
Unicode.c(137) : warning C4101: 'RETVAL' : ローカル変数は 1 度も使われていません。
Unicode.c(168) : warning C4101: 'RETVAL' : ローカル変数は 1 度も使われていません。
Unicode.c(199) : warning C4101: 'RETVAL' : ローカル変数は 1 度も使われていません。
Running Mkbootstrap for Jcode::Unicode ()
        C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 Unicode.bs
        link -out:..\blib\arch\auto\Jcode\Unicode\Unicode.dll -dll -nologo -nodefaultlib -debug -opt:ref,icf  -libpath:"C:\Perl\lib\CORE"  -machine:x86 Unicode.obj   C:\Perl\lib\CORE\perl510.lib oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib  comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib  netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib  version.lib odbc32.lib odbccp32.lib msvcrt.lib -def:Unicode.def
   ライブラリ ..\blib\arch\auto\Jcode\Unicode\Unicode.lib とオブジェクト ..\blib\arch\auto\Jcode\Unicode\Unicode.exp を作成中
        mt -nologo -manifest ..\blib\arch\auto\Jcode\Unicode\Unicode.dll.manifest -outputresource:..\blib\arch\auto\Jcode\Unicode\Unicode.dll;2 && del ..\blib\arch\auto\Jcode\Unicode\Unicode.dll.manifest
        C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 755 ..\blib\arch\auto\Jcode\Unicode\Unicode.dll
        C:\Perl\bin\perl.exe -MExtUtils::Command -e cp Unicode.bs ..\blib\arch\auto\Jcode\Unicode\Unicode.bs
        C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 ..\blib\arch\auto\Jcode\Unicode\Unicode.bs
        cd ..
C:\jcode-0.88>
とオブジェクトができました。

テスト

 これをテストするのですが、
C:\jcode-0.88>nmake test
Microsoft(R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.

        nmake -f Makefile all -nologo
        cd ..
        C:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib\lib', 'blib\arch')" t/*.t
t/convert....ok
t/getcode....ok
t/h2z........ok
t/length.....ok
t/mime.......ok
t/new........ok
t/tr.........ok
All tests successful.
Files=7, Tests=126,  9 wallclock secs ( 0.00 cusr +  0.00 csys =  0.00 CPU)
        nmake test -nologo
'No tests defined for Jcode::Unicode extension.'
        cd ..C:\jcode-0.88>
となればokです。

インストール

 nmake installでperlの中に組み込み使用可能になります。
C:\Jcode-0.88>nmake install

Microsoft(R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.

        nmake -f Makefile all -nologo
        cd ..
Math::BigInt: couldn't load specified math lib(s), fallback to Math::BigInt::FastCalc at C:/Perl/lib/Win32API/File.pm line 20
Files found in blib\arch: installing files in blib\lib into architecture dependent library tree
Installing C:\Perl\site\lib\auto\Jcode\Unicode\Unicode.lib
Installing C:\Perl\site\lib\auto\Jcode\Unicode\Unicode.exp
Installing C:\Perl\site\lib\auto\Jcode\Unicode\Unicode.pdb
Installing C:\Perl\site\lib\auto\Jcode\Unicode\Unicode.dll
Appending installation info to C:\Perl\lib/perllocal.pod

C:\Jcode-0.88>
 念のため、ロードモジュールがないときに動作するC:\perl\site\lib\jcodeの下のUnicodeフォルダを削除してもutf-8のページをHTML Lintでチェックできたので正しく動作しているようです。

ダウンロード

 コンパイル結果とロードモジュールを使う場合に必要なモジュールだけを纏めて圧縮ファイルを作りました。jcwin-0.88.zipをご利用ください。
 Perl 5.8の場合は、本来encodeに移行するべきなのですが、Perl 5.8上でコンパイルしたjcwin8-0.88.zipでも動作するようです。Perl 5.10.0上でコンパイルしたjcwin10-0.88.zipでも動作するようです。

 lhmletで解凍する場合、「ディレクトリ付き」で解凍して、perlを組み込んだボリューム、例えばc:\perl\site\libを指定すれば組み込めるはずです。c:\perl以外の標準でない名称のディレクトリにperlが組み込んである場合は、解凍した場所から対応するディレクトリにコピーしてください。ソースの差分と異なるモジュールをjcodediff.zipとしておいています。

参考文献

既存の日本語文字コードと Unicode の間のマッピングルール Windowsにおける変換を参考にさせていただきました。

ホーム(x)