ホーム > 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~0x7eOverlineU+203E~TildeU+007E
JIS X 0208
01-330xa1c1Wave DashU+301CFullwidth TildeU+FF5E
01-340xa1c2Double Vertical LineU+2016Parallel ToU+2225
01-610xa1ddMinus SignU+2212Fullwidth Hyphen-MinusU+FF0D
01-810xa1f1¢ Cent SignU+00A2Fullwidth Cent SignU+FFE0
01-820xa1f2£ Pound SignU+00A3Fullwidth Pound SignU+FFE1
02-440xa2cc¬Fullwidth Not SignU+00ACNot 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+2225Parallel To0xa1c201-34
U+FF0DFullwidth Hyphen-Minus0xa1dd01-61
U+FF5EFullwidth Tilde0xa1c101-33
U+FFE0Fullwidth Cent Sign0xa1f101-81
U+FFE1Fullwidth Pound Sign0xa1f201-82
U+FFE2Fullwidth 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)