aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--enc/trans/ibm437-tbl.rb130
-rw-r--r--enc/trans/ibm775-tbl.rb130
-rw-r--r--enc/trans/ibm852-tbl.rb130
-rw-r--r--enc/trans/ibm855-tbl.rb130
-rw-r--r--enc/trans/ibm857-tbl.rb127
-rw-r--r--enc/trans/ibm860-tbl.rb130
-rw-r--r--enc/trans/ibm861-tbl.rb130
-rw-r--r--enc/trans/ibm862-tbl.rb130
-rw-r--r--enc/trans/ibm863-tbl.rb130
-rw-r--r--enc/trans/ibm865-tbl.rb130
-rw-r--r--enc/trans/ibm866-tbl.rb130
-rw-r--r--enc/trans/ibm869-tbl.rb121
-rw-r--r--enc/trans/macgreek-tbl.rb129
-rw-r--r--enc/trans/macroman-tbl.rb129
-rw-r--r--enc/trans/macromania-tbl.rb129
-rw-r--r--enc/trans/macturkish-tbl.rb128
-rw-r--r--enc/trans/macukraine-tbl.rb130
-rw-r--r--enc/trans/single_byte.trans17
-rw-r--r--test/ruby/test_transcode.rb347
20 files changed, 2569 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 2e59277982..1eccd552b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+Tue Nov 11 14:25:25 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans, macgreek-tbl.rb, macroman-tbl.rb,
+ macromania-tbl.rb, macturkish-tbl.rb, macukraine-tbl.rb,
+ ibm437-tbl.rb, ibm852-tbl.rb, ibm855-tbl.rb, ibm857-tbl.rb,
+ ibm860-tbl.rb, ibm861-tbl.rb, ibm862-tbl.rb, ibm863-tbl.rb,
+ ibm865-tbl.rb, ibm866-tbl.rb, ibm869-tbl.rb, ibm775-tbl.rb:
+ new single-byte transcodings (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
Tue Nov 11 07:55:57 2008 Tadayoshi Funaba <tadf@dotrb.org>
* lib/date.rb (inspect): changed the format.
diff --git a/enc/trans/ibm437-tbl.rb b/enc/trans/ibm437-tbl.rb
new file mode 100644
index 0000000000..5ae64d621e
--- /dev/null
+++ b/enc/trans/ibm437-tbl.rb
@@ -0,0 +1,130 @@
+IBM437_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["AD",0xA1],
+ ["9B",0xA2],
+ ["9C",0xA3],
+ ["9D",0xA5],
+ ["A6",0xAA],
+ ["AE",0xAB],
+ ["AA",0xAC],
+ ["F8",0xB0],
+ ["F1",0xB1],
+ ["FD",0xB2],
+ ["E6",0xB5],
+ ["FA",0xB7],
+ ["A7",0xBA],
+ ["AF",0xBB],
+ ["AC",0xBC],
+ ["AB",0xBD],
+ ["A8",0xBF],
+ ["8E",0xC4],
+ ["8F",0xC5],
+ ["92",0xC6],
+ ["80",0xC7],
+ ["90",0xC9],
+ ["A5",0xD1],
+ ["99",0xD6],
+ ["9A",0xDC],
+ ["E1",0xDF],
+ ["85",0xE0],
+ ["A0",0xE1],
+ ["83",0xE2],
+ ["84",0xE4],
+ ["86",0xE5],
+ ["91",0xE6],
+ ["87",0xE7],
+ ["8A",0xE8],
+ ["82",0xE9],
+ ["88",0xEA],
+ ["89",0xEB],
+ ["8D",0xEC],
+ ["A1",0xED],
+ ["8C",0xEE],
+ ["8B",0xEF],
+ ["A4",0xF1],
+ ["95",0xF2],
+ ["A2",0xF3],
+ ["93",0xF4],
+ ["94",0xF6],
+ ["F6",0xF7],
+ ["97",0xF9],
+ ["A3",0xFA],
+ ["96",0xFB],
+ ["81",0xFC],
+ ["98",0xFF],
+ ["9F",0x192],
+ ["E2",0x393],
+ ["E9",0x398],
+ ["E4",0x3A3],
+ ["E8",0x3A6],
+ ["EA",0x3A9],
+ ["E0",0x3B1],
+ ["EB",0x3B4],
+ ["EE",0x3B5],
+ ["E3",0x3C0],
+ ["E5",0x3C3],
+ ["E7",0x3C4],
+ ["ED",0x3C6],
+ ["FC",0x207F],
+ ["9E",0x20A7],
+ ["F9",0x2219],
+ ["FB",0x221A],
+ ["EC",0x221E],
+ ["EF",0x2229],
+ ["F7",0x2248],
+ ["F0",0x2261],
+ ["F3",0x2264],
+ ["F2",0x2265],
+ ["A9",0x2310],
+ ["F4",0x2320],
+ ["F5",0x2321],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["D5",0x2552],
+ ["D6",0x2553],
+ ["C9",0x2554],
+ ["B8",0x2555],
+ ["B7",0x2556],
+ ["BB",0x2557],
+ ["D4",0x2558],
+ ["D3",0x2559],
+ ["C8",0x255A],
+ ["BE",0x255B],
+ ["BD",0x255C],
+ ["BC",0x255D],
+ ["C6",0x255E],
+ ["C7",0x255F],
+ ["CC",0x2560],
+ ["B5",0x2561],
+ ["B6",0x2562],
+ ["B9",0x2563],
+ ["D1",0x2564],
+ ["D2",0x2565],
+ ["CB",0x2566],
+ ["CF",0x2567],
+ ["D0",0x2568],
+ ["CA",0x2569],
+ ["D8",0x256A],
+ ["D7",0x256B],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["DD",0x258C],
+ ["DE",0x2590],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm775-tbl.rb b/enc/trans/ibm775-tbl.rb
new file mode 100644
index 0000000000..f55679f409
--- /dev/null
+++ b/enc/trans/ibm775-tbl.rb
@@ -0,0 +1,130 @@
+IBM775_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["96",0xA2],
+ ["9C",0xA3],
+ ["9F",0xA4],
+ ["A7",0xA6],
+ ["F5",0xA7],
+ ["A8",0xA9],
+ ["AE",0xAB],
+ ["AA",0xAC],
+ ["F0",0xAD],
+ ["A9",0xAE],
+ ["F8",0xB0],
+ ["F1",0xB1],
+ ["FD",0xB2],
+ ["FC",0xB3],
+ ["E6",0xB5],
+ ["F4",0xB6],
+ ["FA",0xB7],
+ ["FB",0xB9],
+ ["AF",0xBB],
+ ["AC",0xBC],
+ ["AB",0xBD],
+ ["F3",0xBE],
+ ["8E",0xC4],
+ ["8F",0xC5],
+ ["92",0xC6],
+ ["90",0xC9],
+ ["E0",0xD3],
+ ["E5",0xD5],
+ ["99",0xD6],
+ ["9E",0xD7],
+ ["9D",0xD8],
+ ["9A",0xDC],
+ ["E1",0xDF],
+ ["84",0xE4],
+ ["86",0xE5],
+ ["91",0xE6],
+ ["82",0xE9],
+ ["A2",0xF3],
+ ["E4",0xF5],
+ ["94",0xF6],
+ ["F6",0xF7],
+ ["9B",0xF8],
+ ["81",0xFC],
+ ["A0",0x100],
+ ["83",0x101],
+ ["B5",0x104],
+ ["D0",0x105],
+ ["80",0x106],
+ ["87",0x107],
+ ["B6",0x10C],
+ ["D1",0x10D],
+ ["ED",0x112],
+ ["89",0x113],
+ ["B8",0x116],
+ ["D3",0x117],
+ ["B7",0x118],
+ ["D2",0x119],
+ ["95",0x122],
+ ["85",0x123],
+ ["A1",0x12A],
+ ["8C",0x12B],
+ ["BD",0x12E],
+ ["D4",0x12F],
+ ["E8",0x136],
+ ["E9",0x137],
+ ["EA",0x13B],
+ ["EB",0x13C],
+ ["AD",0x141],
+ ["88",0x142],
+ ["E3",0x143],
+ ["E7",0x144],
+ ["EE",0x145],
+ ["EC",0x146],
+ ["E2",0x14C],
+ ["93",0x14D],
+ ["8A",0x156],
+ ["8B",0x157],
+ ["97",0x15A],
+ ["98",0x15B],
+ ["BE",0x160],
+ ["D5",0x161],
+ ["C7",0x16A],
+ ["D7",0x16B],
+ ["C6",0x172],
+ ["D6",0x173],
+ ["8D",0x179],
+ ["A5",0x17A],
+ ["A3",0x17B],
+ ["A4",0x17C],
+ ["CF",0x17D],
+ ["D8",0x17E],
+ ["EF",0x2019],
+ ["F2",0x201C],
+ ["A6",0x201D],
+ ["F7",0x201E],
+ ["F9",0x2219],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["C9",0x2554],
+ ["BB",0x2557],
+ ["C8",0x255A],
+ ["BC",0x255D],
+ ["CC",0x2560],
+ ["B9",0x2563],
+ ["CB",0x2566],
+ ["CA",0x2569],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["DD",0x258C],
+ ["DE",0x2590],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm852-tbl.rb b/enc/trans/ibm852-tbl.rb
new file mode 100644
index 0000000000..6cec51cf80
--- /dev/null
+++ b/enc/trans/ibm852-tbl.rb
@@ -0,0 +1,130 @@
+IBM852_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["CF",0xA4],
+ ["F5",0xA7],
+ ["F9",0xA8],
+ ["AE",0xAB],
+ ["AA",0xAC],
+ ["F0",0xAD],
+ ["F8",0xB0],
+ ["EF",0xB4],
+ ["F7",0xB8],
+ ["AF",0xBB],
+ ["B5",0xC1],
+ ["B6",0xC2],
+ ["8E",0xC4],
+ ["80",0xC7],
+ ["90",0xC9],
+ ["D3",0xCB],
+ ["D6",0xCD],
+ ["D7",0xCE],
+ ["E0",0xD3],
+ ["E2",0xD4],
+ ["99",0xD6],
+ ["9E",0xD7],
+ ["E9",0xDA],
+ ["9A",0xDC],
+ ["ED",0xDD],
+ ["E1",0xDF],
+ ["A0",0xE1],
+ ["83",0xE2],
+ ["84",0xE4],
+ ["87",0xE7],
+ ["82",0xE9],
+ ["89",0xEB],
+ ["A1",0xED],
+ ["8C",0xEE],
+ ["A2",0xF3],
+ ["93",0xF4],
+ ["94",0xF6],
+ ["F6",0xF7],
+ ["A3",0xFA],
+ ["81",0xFC],
+ ["EC",0xFD],
+ ["C6",0x102],
+ ["C7",0x103],
+ ["A4",0x104],
+ ["A5",0x105],
+ ["8F",0x106],
+ ["86",0x107],
+ ["AC",0x10C],
+ ["9F",0x10D],
+ ["D2",0x10E],
+ ["D4",0x10F],
+ ["D1",0x110],
+ ["D0",0x111],
+ ["A8",0x118],
+ ["A9",0x119],
+ ["B7",0x11A],
+ ["D8",0x11B],
+ ["91",0x139],
+ ["92",0x13A],
+ ["95",0x13D],
+ ["96",0x13E],
+ ["9D",0x141],
+ ["88",0x142],
+ ["E3",0x143],
+ ["E4",0x144],
+ ["D5",0x147],
+ ["E5",0x148],
+ ["8A",0x150],
+ ["8B",0x151],
+ ["E8",0x154],
+ ["EA",0x155],
+ ["FC",0x158],
+ ["FD",0x159],
+ ["97",0x15A],
+ ["98",0x15B],
+ ["B8",0x15E],
+ ["AD",0x15F],
+ ["E6",0x160],
+ ["E7",0x161],
+ ["DD",0x162],
+ ["EE",0x163],
+ ["9B",0x164],
+ ["9C",0x165],
+ ["DE",0x16E],
+ ["85",0x16F],
+ ["EB",0x170],
+ ["FB",0x171],
+ ["8D",0x179],
+ ["AB",0x17A],
+ ["BD",0x17B],
+ ["BE",0x17C],
+ ["A6",0x17D],
+ ["A7",0x17E],
+ ["F3",0x2C7],
+ ["F4",0x2D8],
+ ["FA",0x2D9],
+ ["F2",0x2DB],
+ ["F1",0x2DD],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["C9",0x2554],
+ ["BB",0x2557],
+ ["C8",0x255A],
+ ["BC",0x255D],
+ ["CC",0x2560],
+ ["B9",0x2563],
+ ["CB",0x2566],
+ ["CA",0x2569],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm855-tbl.rb b/enc/trans/ibm855-tbl.rb
new file mode 100644
index 0000000000..7e0cc5014f
--- /dev/null
+++ b/enc/trans/ibm855-tbl.rb
@@ -0,0 +1,130 @@
+IBM855_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["CF",0xA4],
+ ["FD",0xA7],
+ ["AE",0xAB],
+ ["F0",0xAD],
+ ["AF",0xBB],
+ ["85",0x401],
+ ["81",0x402],
+ ["83",0x403],
+ ["87",0x404],
+ ["89",0x405],
+ ["8B",0x406],
+ ["8D",0x407],
+ ["8F",0x408],
+ ["91",0x409],
+ ["93",0x40A],
+ ["95",0x40B],
+ ["97",0x40C],
+ ["99",0x40E],
+ ["9B",0x40F],
+ ["A1",0x410],
+ ["A3",0x411],
+ ["EC",0x412],
+ ["AD",0x413],
+ ["A7",0x414],
+ ["A9",0x415],
+ ["EA",0x416],
+ ["F4",0x417],
+ ["B8",0x418],
+ ["BE",0x419],
+ ["C7",0x41A],
+ ["D1",0x41B],
+ ["D3",0x41C],
+ ["D5",0x41D],
+ ["D7",0x41E],
+ ["DD",0x41F],
+ ["E2",0x420],
+ ["E4",0x421],
+ ["E6",0x422],
+ ["E8",0x423],
+ ["AB",0x424],
+ ["B6",0x425],
+ ["A5",0x426],
+ ["FC",0x427],
+ ["F6",0x428],
+ ["FA",0x429],
+ ["9F",0x42A],
+ ["F2",0x42B],
+ ["EE",0x42C],
+ ["F8",0x42D],
+ ["9D",0x42E],
+ ["E0",0x42F],
+ ["A0",0x430],
+ ["A2",0x431],
+ ["EB",0x432],
+ ["AC",0x433],
+ ["A6",0x434],
+ ["A8",0x435],
+ ["E9",0x436],
+ ["F3",0x437],
+ ["B7",0x438],
+ ["BD",0x439],
+ ["C6",0x43A],
+ ["D0",0x43B],
+ ["D2",0x43C],
+ ["D4",0x43D],
+ ["D6",0x43E],
+ ["D8",0x43F],
+ ["E1",0x440],
+ ["E3",0x441],
+ ["E5",0x442],
+ ["E7",0x443],
+ ["AA",0x444],
+ ["B5",0x445],
+ ["A4",0x446],
+ ["FB",0x447],
+ ["F5",0x448],
+ ["F9",0x449],
+ ["9E",0x44A],
+ ["F1",0x44B],
+ ["ED",0x44C],
+ ["F7",0x44D],
+ ["9C",0x44E],
+ ["DE",0x44F],
+ ["84",0x451],
+ ["80",0x452],
+ ["82",0x453],
+ ["86",0x454],
+ ["88",0x455],
+ ["8A",0x456],
+ ["8C",0x457],
+ ["8E",0x458],
+ ["90",0x459],
+ ["92",0x45A],
+ ["94",0x45B],
+ ["96",0x45C],
+ ["98",0x45E],
+ ["9A",0x45F],
+ ["EF",0x2116],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["C9",0x2554],
+ ["BB",0x2557],
+ ["C8",0x255A],
+ ["BC",0x255D],
+ ["CC",0x2560],
+ ["B9",0x2563],
+ ["CB",0x2566],
+ ["CA",0x2569],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm857-tbl.rb b/enc/trans/ibm857-tbl.rb
new file mode 100644
index 0000000000..5b20d389d3
--- /dev/null
+++ b/enc/trans/ibm857-tbl.rb
@@ -0,0 +1,127 @@
+IBM857_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["AD",0xA1],
+ ["BD",0xA2],
+ ["9C",0xA3],
+ ["CF",0xA4],
+ ["BE",0xA5],
+ ["DD",0xA6],
+ ["F5",0xA7],
+ ["F9",0xA8],
+ ["B8",0xA9],
+ ["D1",0xAA],
+ ["AE",0xAB],
+ ["AA",0xAC],
+ ["F0",0xAD],
+ ["A9",0xAE],
+ ["EE",0xAF],
+ ["F8",0xB0],
+ ["F1",0xB1],
+ ["FD",0xB2],
+ ["FC",0xB3],
+ ["EF",0xB4],
+ ["E6",0xB5],
+ ["F4",0xB6],
+ ["FA",0xB7],
+ ["F7",0xB8],
+ ["FB",0xB9],
+ ["D0",0xBA],
+ ["AF",0xBB],
+ ["AC",0xBC],
+ ["AB",0xBD],
+ ["F3",0xBE],
+ ["A8",0xBF],
+ ["B7",0xC0],
+ ["B5",0xC1],
+ ["B6",0xC2],
+ ["C7",0xC3],
+ ["8E",0xC4],
+ ["8F",0xC5],
+ ["92",0xC6],
+ ["80",0xC7],
+ ["D4",0xC8],
+ ["90",0xC9],
+ ["D2",0xCA],
+ ["D3",0xCB],
+ ["DE",0xCC],
+ ["D6",0xCD],
+ ["D7",0xCE],
+ ["D8",0xCF],
+ ["A5",0xD1],
+ ["E3",0xD2],
+ ["E0",0xD3],
+ ["E2",0xD4],
+ ["E5",0xD5],
+ ["99",0xD6],
+ ["E8",0xD7],
+ ["9D",0xD8],
+ ["EB",0xD9],
+ ["E9",0xDA],
+ ["EA",0xDB],
+ ["9A",0xDC],
+ ["E1",0xDF],
+ ["85",0xE0],
+ ["A0",0xE1],
+ ["83",0xE2],
+ ["C6",0xE3],
+ ["84",0xE4],
+ ["86",0xE5],
+ ["91",0xE6],
+ ["87",0xE7],
+ ["8A",0xE8],
+ ["82",0xE9],
+ ["88",0xEA],
+ ["89",0xEB],
+ ["EC",0xEC],
+ ["A1",0xED],
+ ["8C",0xEE],
+ ["8B",0xEF],
+ ["A4",0xF1],
+ ["95",0xF2],
+ ["A2",0xF3],
+ ["93",0xF4],
+ ["E4",0xF5],
+ ["94",0xF6],
+ ["F6",0xF7],
+ ["9B",0xF8],
+ ["97",0xF9],
+ ["A3",0xFA],
+ ["96",0xFB],
+ ["81",0xFC],
+ ["ED",0xFF],
+ ["A6",0x11E],
+ ["A7",0x11F],
+ ["98",0x130],
+ ["8D",0x131],
+ ["9E",0x15E],
+ ["9F",0x15F],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["C9",0x2554],
+ ["BB",0x2557],
+ ["C8",0x255A],
+ ["BC",0x255D],
+ ["CC",0x2560],
+ ["B9",0x2563],
+ ["CB",0x2566],
+ ["CA",0x2569],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm860-tbl.rb b/enc/trans/ibm860-tbl.rb
new file mode 100644
index 0000000000..ae218a129f
--- /dev/null
+++ b/enc/trans/ibm860-tbl.rb
@@ -0,0 +1,130 @@
+IBM860_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["AD",0xA1],
+ ["9B",0xA2],
+ ["9C",0xA3],
+ ["A6",0xAA],
+ ["AE",0xAB],
+ ["AA",0xAC],
+ ["F8",0xB0],
+ ["F1",0xB1],
+ ["FD",0xB2],
+ ["E6",0xB5],
+ ["FA",0xB7],
+ ["A7",0xBA],
+ ["AF",0xBB],
+ ["AC",0xBC],
+ ["AB",0xBD],
+ ["A8",0xBF],
+ ["91",0xC0],
+ ["86",0xC1],
+ ["8F",0xC2],
+ ["8E",0xC3],
+ ["80",0xC7],
+ ["92",0xC8],
+ ["90",0xC9],
+ ["89",0xCA],
+ ["98",0xCC],
+ ["8B",0xCD],
+ ["A5",0xD1],
+ ["A9",0xD2],
+ ["9F",0xD3],
+ ["8C",0xD4],
+ ["99",0xD5],
+ ["9D",0xD9],
+ ["96",0xDA],
+ ["9A",0xDC],
+ ["E1",0xDF],
+ ["85",0xE0],
+ ["A0",0xE1],
+ ["83",0xE2],
+ ["84",0xE3],
+ ["87",0xE7],
+ ["8A",0xE8],
+ ["82",0xE9],
+ ["88",0xEA],
+ ["8D",0xEC],
+ ["A1",0xED],
+ ["A4",0xF1],
+ ["95",0xF2],
+ ["A2",0xF3],
+ ["93",0xF4],
+ ["94",0xF5],
+ ["F6",0xF7],
+ ["97",0xF9],
+ ["A3",0xFA],
+ ["81",0xFC],
+ ["E2",0x393],
+ ["E9",0x398],
+ ["E4",0x3A3],
+ ["E8",0x3A6],
+ ["EA",0x3A9],
+ ["E0",0x3B1],
+ ["EB",0x3B4],
+ ["EE",0x3B5],
+ ["E3",0x3C0],
+ ["E5",0x3C3],
+ ["E7",0x3C4],
+ ["ED",0x3C6],
+ ["FC",0x207F],
+ ["9E",0x20A7],
+ ["F9",0x2219],
+ ["FB",0x221A],
+ ["EC",0x221E],
+ ["EF",0x2229],
+ ["F7",0x2248],
+ ["F0",0x2261],
+ ["F3",0x2264],
+ ["F2",0x2265],
+ ["F4",0x2320],
+ ["F5",0x2321],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["D5",0x2552],
+ ["D6",0x2553],
+ ["C9",0x2554],
+ ["B8",0x2555],
+ ["B7",0x2556],
+ ["BB",0x2557],
+ ["D4",0x2558],
+ ["D3",0x2559],
+ ["C8",0x255A],
+ ["BE",0x255B],
+ ["BD",0x255C],
+ ["BC",0x255D],
+ ["C6",0x255E],
+ ["C7",0x255F],
+ ["CC",0x2560],
+ ["B5",0x2561],
+ ["B6",0x2562],
+ ["B9",0x2563],
+ ["D1",0x2564],
+ ["D2",0x2565],
+ ["CB",0x2566],
+ ["CF",0x2567],
+ ["D0",0x2568],
+ ["CA",0x2569],
+ ["D8",0x256A],
+ ["D7",0x256B],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["DD",0x258C],
+ ["DE",0x2590],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm861-tbl.rb b/enc/trans/ibm861-tbl.rb
new file mode 100644
index 0000000000..c24042a76c
--- /dev/null
+++ b/enc/trans/ibm861-tbl.rb
@@ -0,0 +1,130 @@
+IBM861_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["AD",0xA1],
+ ["9C",0xA3],
+ ["AE",0xAB],
+ ["AA",0xAC],
+ ["F8",0xB0],
+ ["F1",0xB1],
+ ["FD",0xB2],
+ ["E6",0xB5],
+ ["FA",0xB7],
+ ["AF",0xBB],
+ ["AC",0xBC],
+ ["AB",0xBD],
+ ["A8",0xBF],
+ ["A4",0xC1],
+ ["8E",0xC4],
+ ["8F",0xC5],
+ ["92",0xC6],
+ ["80",0xC7],
+ ["90",0xC9],
+ ["A5",0xCD],
+ ["8B",0xD0],
+ ["A6",0xD3],
+ ["99",0xD6],
+ ["9D",0xD8],
+ ["A7",0xDA],
+ ["9A",0xDC],
+ ["97",0xDD],
+ ["8D",0xDE],
+ ["E1",0xDF],
+ ["85",0xE0],
+ ["A0",0xE1],
+ ["83",0xE2],
+ ["84",0xE4],
+ ["86",0xE5],
+ ["91",0xE6],
+ ["87",0xE7],
+ ["8A",0xE8],
+ ["82",0xE9],
+ ["88",0xEA],
+ ["89",0xEB],
+ ["A1",0xED],
+ ["8C",0xF0],
+ ["A2",0xF3],
+ ["93",0xF4],
+ ["94",0xF6],
+ ["F6",0xF7],
+ ["9B",0xF8],
+ ["A3",0xFA],
+ ["96",0xFB],
+ ["81",0xFC],
+ ["98",0xFD],
+ ["95",0xFE],
+ ["9F",0x192],
+ ["E2",0x393],
+ ["E9",0x398],
+ ["E4",0x3A3],
+ ["E8",0x3A6],
+ ["EA",0x3A9],
+ ["E0",0x3B1],
+ ["EB",0x3B4],
+ ["EE",0x3B5],
+ ["E3",0x3C0],
+ ["E5",0x3C3],
+ ["E7",0x3C4],
+ ["ED",0x3C6],
+ ["FC",0x207F],
+ ["9E",0x20A7],
+ ["F9",0x2219],
+ ["FB",0x221A],
+ ["EC",0x221E],
+ ["EF",0x2229],
+ ["F7",0x2248],
+ ["F0",0x2261],
+ ["F3",0x2264],
+ ["F2",0x2265],
+ ["A9",0x2310],
+ ["F4",0x2320],
+ ["F5",0x2321],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["D5",0x2552],
+ ["D6",0x2553],
+ ["C9",0x2554],
+ ["B8",0x2555],
+ ["B7",0x2556],
+ ["BB",0x2557],
+ ["D4",0x2558],
+ ["D3",0x2559],
+ ["C8",0x255A],
+ ["BE",0x255B],
+ ["BD",0x255C],
+ ["BC",0x255D],
+ ["C6",0x255E],
+ ["C7",0x255F],
+ ["CC",0x2560],
+ ["B5",0x2561],
+ ["B6",0x2562],
+ ["B9",0x2563],
+ ["D1",0x2564],
+ ["D2",0x2565],
+ ["CB",0x2566],
+ ["CF",0x2567],
+ ["D0",0x2568],
+ ["CA",0x2569],
+ ["D8",0x256A],
+ ["D7",0x256B],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["DD",0x258C],
+ ["DE",0x2590],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm862-tbl.rb b/enc/trans/ibm862-tbl.rb
new file mode 100644
index 0000000000..31d6fb0243
--- /dev/null
+++ b/enc/trans/ibm862-tbl.rb
@@ -0,0 +1,130 @@
+IBM862_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["AD",0xA1],
+ ["9B",0xA2],
+ ["9C",0xA3],
+ ["9D",0xA5],
+ ["A6",0xAA],
+ ["AE",0xAB],
+ ["AA",0xAC],
+ ["F8",0xB0],
+ ["F1",0xB1],
+ ["FD",0xB2],
+ ["E6",0xB5],
+ ["FA",0xB7],
+ ["A7",0xBA],
+ ["AF",0xBB],
+ ["AC",0xBC],
+ ["AB",0xBD],
+ ["A8",0xBF],
+ ["A5",0xD1],
+ ["E1",0xDF],
+ ["A0",0xE1],
+ ["A1",0xED],
+ ["A4",0xF1],
+ ["A2",0xF3],
+ ["F6",0xF7],
+ ["A3",0xFA],
+ ["9F",0x192],
+ ["E2",0x393],
+ ["E9",0x398],
+ ["E4",0x3A3],
+ ["E8",0x3A6],
+ ["EA",0x3A9],
+ ["E0",0x3B1],
+ ["EB",0x3B4],
+ ["EE",0x3B5],
+ ["E3",0x3C0],
+ ["E5",0x3C3],
+ ["E7",0x3C4],
+ ["ED",0x3C6],
+ ["80",0x5D0],
+ ["81",0x5D1],
+ ["82",0x5D2],
+ ["83",0x5D3],
+ ["84",0x5D4],
+ ["85",0x5D5],
+ ["86",0x5D6],
+ ["87",0x5D7],
+ ["88",0x5D8],
+ ["89",0x5D9],
+ ["8A",0x5DA],
+ ["8B",0x5DB],
+ ["8C",0x5DC],
+ ["8D",0x5DD],
+ ["8E",0x5DE],
+ ["8F",0x5DF],
+ ["90",0x5E0],
+ ["91",0x5E1],
+ ["92",0x5E2],
+ ["93",0x5E3],
+ ["94",0x5E4],
+ ["95",0x5E5],
+ ["96",0x5E6],
+ ["97",0x5E7],
+ ["98",0x5E8],
+ ["99",0x5E9],
+ ["9A",0x5EA],
+ ["FC",0x207F],
+ ["9E",0x20A7],
+ ["F9",0x2219],
+ ["FB",0x221A],
+ ["EC",0x221E],
+ ["EF",0x2229],
+ ["F7",0x2248],
+ ["F0",0x2261],
+ ["F3",0x2264],
+ ["F2",0x2265],
+ ["A9",0x2310],
+ ["F4",0x2320],
+ ["F5",0x2321],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["D5",0x2552],
+ ["D6",0x2553],
+ ["C9",0x2554],
+ ["B8",0x2555],
+ ["B7",0x2556],
+ ["BB",0x2557],
+ ["D4",0x2558],
+ ["D3",0x2559],
+ ["C8",0x255A],
+ ["BE",0x255B],
+ ["BD",0x255C],
+ ["BC",0x255D],
+ ["C6",0x255E],
+ ["C7",0x255F],
+ ["CC",0x2560],
+ ["B5",0x2561],
+ ["B6",0x2562],
+ ["B9",0x2563],
+ ["D1",0x2564],
+ ["D2",0x2565],
+ ["CB",0x2566],
+ ["CF",0x2567],
+ ["D0",0x2568],
+ ["CA",0x2569],
+ ["D8",0x256A],
+ ["D7",0x256B],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["DD",0x258C],
+ ["DE",0x2590],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm863-tbl.rb b/enc/trans/ibm863-tbl.rb
new file mode 100644
index 0000000000..db110cf38c
--- /dev/null
+++ b/enc/trans/ibm863-tbl.rb
@@ -0,0 +1,130 @@
+IBM863_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["9B",0xA2],
+ ["9C",0xA3],
+ ["98",0xA4],
+ ["A0",0xA6],
+ ["8F",0xA7],
+ ["A4",0xA8],
+ ["AE",0xAB],
+ ["AA",0xAC],
+ ["A7",0xAF],
+ ["F8",0xB0],
+ ["F1",0xB1],
+ ["FD",0xB2],
+ ["A6",0xB3],
+ ["A1",0xB4],
+ ["E6",0xB5],
+ ["86",0xB6],
+ ["FA",0xB7],
+ ["A5",0xB8],
+ ["AF",0xBB],
+ ["AC",0xBC],
+ ["AB",0xBD],
+ ["AD",0xBE],
+ ["8E",0xC0],
+ ["84",0xC2],
+ ["80",0xC7],
+ ["91",0xC8],
+ ["90",0xC9],
+ ["92",0xCA],
+ ["94",0xCB],
+ ["A8",0xCE],
+ ["95",0xCF],
+ ["99",0xD4],
+ ["9D",0xD9],
+ ["9E",0xDB],
+ ["9A",0xDC],
+ ["E1",0xDF],
+ ["85",0xE0],
+ ["83",0xE2],
+ ["87",0xE7],
+ ["8A",0xE8],
+ ["82",0xE9],
+ ["88",0xEA],
+ ["89",0xEB],
+ ["8C",0xEE],
+ ["8B",0xEF],
+ ["A2",0xF3],
+ ["93",0xF4],
+ ["F6",0xF7],
+ ["97",0xF9],
+ ["A3",0xFA],
+ ["96",0xFB],
+ ["81",0xFC],
+ ["9F",0x192],
+ ["E2",0x393],
+ ["E9",0x398],
+ ["E4",0x3A3],
+ ["E8",0x3A6],
+ ["EA",0x3A9],
+ ["E0",0x3B1],
+ ["EB",0x3B4],
+ ["EE",0x3B5],
+ ["E3",0x3C0],
+ ["E5",0x3C3],
+ ["E7",0x3C4],
+ ["ED",0x3C6],
+ ["8D",0x2017],
+ ["FC",0x207F],
+ ["F9",0x2219],
+ ["FB",0x221A],
+ ["EC",0x221E],
+ ["EF",0x2229],
+ ["F7",0x2248],
+ ["F0",0x2261],
+ ["F3",0x2264],
+ ["F2",0x2265],
+ ["A9",0x2310],
+ ["F4",0x2320],
+ ["F5",0x2321],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["D5",0x2552],
+ ["D6",0x2553],
+ ["C9",0x2554],
+ ["B8",0x2555],
+ ["B7",0x2556],
+ ["BB",0x2557],
+ ["D4",0x2558],
+ ["D3",0x2559],
+ ["C8",0x255A],
+ ["BE",0x255B],
+ ["BD",0x255C],
+ ["BC",0x255D],
+ ["C6",0x255E],
+ ["C7",0x255F],
+ ["CC",0x2560],
+ ["B5",0x2561],
+ ["B6",0x2562],
+ ["B9",0x2563],
+ ["D1",0x2564],
+ ["D2",0x2565],
+ ["CB",0x2566],
+ ["CF",0x2567],
+ ["D0",0x2568],
+ ["CA",0x2569],
+ ["D8",0x256A],
+ ["D7",0x256B],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["DD",0x258C],
+ ["DE",0x2590],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm865-tbl.rb b/enc/trans/ibm865-tbl.rb
new file mode 100644
index 0000000000..22e322fb31
--- /dev/null
+++ b/enc/trans/ibm865-tbl.rb
@@ -0,0 +1,130 @@
+IBM865_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["AD",0xA1],
+ ["9C",0xA3],
+ ["AF",0xA4],
+ ["A6",0xAA],
+ ["AE",0xAB],
+ ["AA",0xAC],
+ ["F8",0xB0],
+ ["F1",0xB1],
+ ["FD",0xB2],
+ ["E6",0xB5],
+ ["FA",0xB7],
+ ["A7",0xBA],
+ ["AC",0xBC],
+ ["AB",0xBD],
+ ["A8",0xBF],
+ ["8E",0xC4],
+ ["8F",0xC5],
+ ["92",0xC6],
+ ["80",0xC7],
+ ["90",0xC9],
+ ["A5",0xD1],
+ ["99",0xD6],
+ ["9D",0xD8],
+ ["9A",0xDC],
+ ["E1",0xDF],
+ ["85",0xE0],
+ ["A0",0xE1],
+ ["83",0xE2],
+ ["84",0xE4],
+ ["86",0xE5],
+ ["91",0xE6],
+ ["87",0xE7],
+ ["8A",0xE8],
+ ["82",0xE9],
+ ["88",0xEA],
+ ["89",0xEB],
+ ["8D",0xEC],
+ ["A1",0xED],
+ ["8C",0xEE],
+ ["8B",0xEF],
+ ["A4",0xF1],
+ ["95",0xF2],
+ ["A2",0xF3],
+ ["93",0xF4],
+ ["94",0xF6],
+ ["F6",0xF7],
+ ["9B",0xF8],
+ ["97",0xF9],
+ ["A3",0xFA],
+ ["96",0xFB],
+ ["81",0xFC],
+ ["98",0xFF],
+ ["9F",0x192],
+ ["E2",0x393],
+ ["E9",0x398],
+ ["E4",0x3A3],
+ ["E8",0x3A6],
+ ["EA",0x3A9],
+ ["E0",0x3B1],
+ ["EB",0x3B4],
+ ["EE",0x3B5],
+ ["E3",0x3C0],
+ ["E5",0x3C3],
+ ["E7",0x3C4],
+ ["ED",0x3C6],
+ ["FC",0x207F],
+ ["9E",0x20A7],
+ ["F9",0x2219],
+ ["FB",0x221A],
+ ["EC",0x221E],
+ ["EF",0x2229],
+ ["F7",0x2248],
+ ["F0",0x2261],
+ ["F3",0x2264],
+ ["F2",0x2265],
+ ["A9",0x2310],
+ ["F4",0x2320],
+ ["F5",0x2321],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["D5",0x2552],
+ ["D6",0x2553],
+ ["C9",0x2554],
+ ["B8",0x2555],
+ ["B7",0x2556],
+ ["BB",0x2557],
+ ["D4",0x2558],
+ ["D3",0x2559],
+ ["C8",0x255A],
+ ["BE",0x255B],
+ ["BD",0x255C],
+ ["BC",0x255D],
+ ["C6",0x255E],
+ ["C7",0x255F],
+ ["CC",0x2560],
+ ["B5",0x2561],
+ ["B6",0x2562],
+ ["B9",0x2563],
+ ["D1",0x2564],
+ ["D2",0x2565],
+ ["CB",0x2566],
+ ["CF",0x2567],
+ ["D0",0x2568],
+ ["CA",0x2569],
+ ["D8",0x256A],
+ ["D7",0x256B],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["DD",0x258C],
+ ["DE",0x2590],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm866-tbl.rb b/enc/trans/ibm866-tbl.rb
new file mode 100644
index 0000000000..95b9ee7534
--- /dev/null
+++ b/enc/trans/ibm866-tbl.rb
@@ -0,0 +1,130 @@
+IBM866_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["FD",0xA4],
+ ["F8",0xB0],
+ ["FA",0xB7],
+ ["F0",0x401],
+ ["F2",0x404],
+ ["F4",0x407],
+ ["F6",0x40E],
+ ["80",0x410],
+ ["81",0x411],
+ ["82",0x412],
+ ["83",0x413],
+ ["84",0x414],
+ ["85",0x415],
+ ["86",0x416],
+ ["87",0x417],
+ ["88",0x418],
+ ["89",0x419],
+ ["8A",0x41A],
+ ["8B",0x41B],
+ ["8C",0x41C],
+ ["8D",0x41D],
+ ["8E",0x41E],
+ ["8F",0x41F],
+ ["90",0x420],
+ ["91",0x421],
+ ["92",0x422],
+ ["93",0x423],
+ ["94",0x424],
+ ["95",0x425],
+ ["96",0x426],
+ ["97",0x427],
+ ["98",0x428],
+ ["99",0x429],
+ ["9A",0x42A],
+ ["9B",0x42B],
+ ["9C",0x42C],
+ ["9D",0x42D],
+ ["9E",0x42E],
+ ["9F",0x42F],
+ ["A0",0x430],
+ ["A1",0x431],
+ ["A2",0x432],
+ ["A3",0x433],
+ ["A4",0x434],
+ ["A5",0x435],
+ ["A6",0x436],
+ ["A7",0x437],
+ ["A8",0x438],
+ ["A9",0x439],
+ ["AA",0x43A],
+ ["AB",0x43B],
+ ["AC",0x43C],
+ ["AD",0x43D],
+ ["AE",0x43E],
+ ["AF",0x43F],
+ ["E0",0x440],
+ ["E1",0x441],
+ ["E2",0x442],
+ ["E3",0x443],
+ ["E4",0x444],
+ ["E5",0x445],
+ ["E6",0x446],
+ ["E7",0x447],
+ ["E8",0x448],
+ ["E9",0x449],
+ ["EA",0x44A],
+ ["EB",0x44B],
+ ["EC",0x44C],
+ ["ED",0x44D],
+ ["EE",0x44E],
+ ["EF",0x44F],
+ ["F1",0x451],
+ ["F3",0x454],
+ ["F5",0x457],
+ ["F7",0x45E],
+ ["FC",0x2116],
+ ["F9",0x2219],
+ ["FB",0x221A],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["D5",0x2552],
+ ["D6",0x2553],
+ ["C9",0x2554],
+ ["B8",0x2555],
+ ["B7",0x2556],
+ ["BB",0x2557],
+ ["D4",0x2558],
+ ["D3",0x2559],
+ ["C8",0x255A],
+ ["BE",0x255B],
+ ["BD",0x255C],
+ ["BC",0x255D],
+ ["C6",0x255E],
+ ["C7",0x255F],
+ ["CC",0x2560],
+ ["B5",0x2561],
+ ["B6",0x2562],
+ ["B9",0x2563],
+ ["D1",0x2564],
+ ["D2",0x2565],
+ ["CB",0x2566],
+ ["CF",0x2567],
+ ["D0",0x2568],
+ ["CA",0x2569],
+ ["D8",0x256A],
+ ["D7",0x256B],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["DD",0x258C],
+ ["DE",0x2590],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/ibm869-tbl.rb b/enc/trans/ibm869-tbl.rb
new file mode 100644
index 0000000000..437e41ad98
--- /dev/null
+++ b/enc/trans/ibm869-tbl.rb
@@ -0,0 +1,121 @@
+IBM869_TO_UCS_TBL = [
+ ["FF",0xA0],
+ ["9C",0xA3],
+ ["8A",0xA6],
+ ["F5",0xA7],
+ ["F9",0xA8],
+ ["97",0xA9],
+ ["AE",0xAB],
+ ["89",0xAC],
+ ["F0",0xAD],
+ ["F8",0xB0],
+ ["F1",0xB1],
+ ["99",0xB2],
+ ["9A",0xB3],
+ ["88",0xB7],
+ ["AF",0xBB],
+ ["AB",0xBD],
+ ["EF",0x384],
+ ["F7",0x385],
+ ["86",0x386],
+ ["8D",0x388],
+ ["8F",0x389],
+ ["90",0x38A],
+ ["92",0x38C],
+ ["95",0x38E],
+ ["98",0x38F],
+ ["A1",0x390],
+ ["A4",0x391],
+ ["A5",0x392],
+ ["A6",0x393],
+ ["A7",0x394],
+ ["A8",0x395],
+ ["A9",0x396],
+ ["AA",0x397],
+ ["AC",0x398],
+ ["AD",0x399],
+ ["B5",0x39A],
+ ["B6",0x39B],
+ ["B7",0x39C],
+ ["B8",0x39D],
+ ["BD",0x39E],
+ ["BE",0x39F],
+ ["C6",0x3A0],
+ ["C7",0x3A1],
+ ["CF",0x3A3],
+ ["D0",0x3A4],
+ ["D1",0x3A5],
+ ["D2",0x3A6],
+ ["D3",0x3A7],
+ ["D4",0x3A8],
+ ["D5",0x3A9],
+ ["91",0x3AA],
+ ["96",0x3AB],
+ ["9B",0x3AC],
+ ["9D",0x3AD],
+ ["9E",0x3AE],
+ ["9F",0x3AF],
+ ["FC",0x3B0],
+ ["D6",0x3B1],
+ ["D7",0x3B2],
+ ["D8",0x3B3],
+ ["DD",0x3B4],
+ ["DE",0x3B5],
+ ["E0",0x3B6],
+ ["E1",0x3B7],
+ ["E2",0x3B8],
+ ["E3",0x3B9],
+ ["E4",0x3BA],
+ ["E5",0x3BB],
+ ["E6",0x3BC],
+ ["E7",0x3BD],
+ ["E8",0x3BE],
+ ["E9",0x3BF],
+ ["EA",0x3C0],
+ ["EB",0x3C1],
+ ["ED",0x3C2],
+ ["EC",0x3C3],
+ ["EE",0x3C4],
+ ["F2",0x3C5],
+ ["F3",0x3C6],
+ ["F4",0x3C7],
+ ["F6",0x3C8],
+ ["FA",0x3C9],
+ ["A0",0x3CA],
+ ["FB",0x3CB],
+ ["A2",0x3CC],
+ ["A3",0x3CD],
+ ["FD",0x3CE],
+ ["8E",0x2015],
+ ["8B",0x2018],
+ ["8C",0x2019],
+ ["C4",0x2500],
+ ["B3",0x2502],
+ ["DA",0x250C],
+ ["BF",0x2510],
+ ["C0",0x2514],
+ ["D9",0x2518],
+ ["C3",0x251C],
+ ["B4",0x2524],
+ ["C2",0x252C],
+ ["C1",0x2534],
+ ["C5",0x253C],
+ ["CD",0x2550],
+ ["BA",0x2551],
+ ["C9",0x2554],
+ ["BB",0x2557],
+ ["C8",0x255A],
+ ["BC",0x255D],
+ ["CC",0x2560],
+ ["B9",0x2563],
+ ["CB",0x2566],
+ ["CA",0x2569],
+ ["CE",0x256C],
+ ["DF",0x2580],
+ ["DC",0x2584],
+ ["DB",0x2588],
+ ["B0",0x2591],
+ ["B1",0x2592],
+ ["B2",0x2593],
+ ["FE",0x25A0],
+] \ No newline at end of file
diff --git a/enc/trans/macgreek-tbl.rb b/enc/trans/macgreek-tbl.rb
new file mode 100644
index 0000000000..7f75fde6d2
--- /dev/null
+++ b/enc/trans/macgreek-tbl.rb
@@ -0,0 +1,129 @@
+MACGREEK_TO_UCS_TBL = [
+ ["CA",0xA0],
+ ["92",0xA3],
+ ["B4",0xA5],
+ ["9B",0xA6],
+ ["AC",0xA7],
+ ["8C",0xA8],
+ ["A9",0xA9],
+ ["C7",0xAB],
+ ["C2",0xAC],
+ ["9C",0xAD],
+ ["A8",0xAE],
+ ["AE",0xB0],
+ ["B1",0xB1],
+ ["82",0xB2],
+ ["84",0xB3],
+ ["81",0xB9],
+ ["C8",0xBB],
+ ["97",0xBD],
+ ["80",0xC4],
+ ["83",0xC9],
+ ["85",0xD6],
+ ["86",0xDC],
+ ["A7",0xDF],
+ ["88",0xE0],
+ ["89",0xE2],
+ ["8A",0xE4],
+ ["8D",0xE7],
+ ["8F",0xE8],
+ ["8E",0xE9],
+ ["90",0xEA],
+ ["91",0xEB],
+ ["94",0xEE],
+ ["95",0xEF],
+ ["99",0xF4],
+ ["9A",0xF6],
+ ["D6",0xF7],
+ ["9D",0xF9],
+ ["9E",0xFB],
+ ["9F",0xFC],
+ ["CF",0x153],
+ ["8B",0x384],
+ ["87",0x385],
+ ["CD",0x386],
+ ["AF",0x387],
+ ["CE",0x388],
+ ["D7",0x389],
+ ["D8",0x38A],
+ ["D9",0x38C],
+ ["DA",0x38E],
+ ["DF",0x38F],
+ ["FD",0x390],
+ ["B0",0x391],
+ ["B5",0x392],
+ ["A1",0x393],
+ ["A2",0x394],
+ ["B6",0x395],
+ ["B7",0x396],
+ ["B8",0x397],
+ ["A3",0x398],
+ ["B9",0x399],
+ ["BA",0x39A],
+ ["A4",0x39B],
+ ["BB",0x39C],
+ ["C1",0x39D],
+ ["A5",0x39E],
+ ["C3",0x39F],
+ ["A6",0x3A0],
+ ["C4",0x3A1],
+ ["AA",0x3A3],
+ ["C6",0x3A4],
+ ["CB",0x3A5],
+ ["BC",0x3A6],
+ ["CC",0x3A7],
+ ["BE",0x3A8],
+ ["BF",0x3A9],
+ ["AB",0x3AA],
+ ["BD",0x3AB],
+ ["C0",0x3AC],
+ ["DB",0x3AD],
+ ["DC",0x3AE],
+ ["DD",0x3AF],
+ ["FE",0x3B0],
+ ["E1",0x3B1],
+ ["E2",0x3B2],
+ ["E7",0x3B3],
+ ["E4",0x3B4],
+ ["E5",0x3B5],
+ ["FA",0x3B6],
+ ["E8",0x3B7],
+ ["F5",0x3B8],
+ ["E9",0x3B9],
+ ["EB",0x3BA],
+ ["EC",0x3BB],
+ ["ED",0x3BC],
+ ["EE",0x3BD],
+ ["EA",0x3BE],
+ ["EF",0x3BF],
+ ["F0",0x3C0],
+ ["F2",0x3C1],
+ ["F7",0x3C2],
+ ["F3",0x3C3],
+ ["F4",0x3C4],
+ ["F9",0x3C5],
+ ["E6",0x3C6],
+ ["F8",0x3C7],
+ ["E3",0x3C8],
+ ["F6",0x3C9],
+ ["FB",0x3CA],
+ ["FC",0x3CB],
+ ["DE",0x3CC],
+ ["E0",0x3CD],
+ ["F1",0x3CE],
+ ["D0",0x2013],
+ ["D1",0x2015],
+ ["D4",0x2018],
+ ["D5",0x2019],
+ ["D2",0x201C],
+ ["D3",0x201D],
+ ["A0",0x2020],
+ ["96",0x2022],
+ ["C9",0x2026],
+ ["98",0x2030],
+ ["93",0x2122],
+ ["C5",0x2248],
+ ["AD",0x2260],
+ ["B2",0x2264],
+ ["B3",0x2265],
+] \ No newline at end of file
diff --git a/enc/trans/macroman-tbl.rb b/enc/trans/macroman-tbl.rb
new file mode 100644
index 0000000000..8f74eea27f
--- /dev/null
+++ b/enc/trans/macroman-tbl.rb
@@ -0,0 +1,129 @@
+MACROMAN_TO_UCS_TBL = [
+ ["CA",0xA0],
+ ["C1",0xA1],
+ ["A2",0xA2],
+ ["A3",0xA3],
+ ["DB",0xA4],
+ ["B4",0xA5],
+ ["A4",0xA7],
+ ["AC",0xA8],
+ ["A9",0xA9],
+ ["BB",0xAA],
+ ["C7",0xAB],
+ ["C2",0xAC],
+ ["A8",0xAE],
+ ["F8",0xAF],
+ ["A1",0xB0],
+ ["B1",0xB1],
+ ["AB",0xB4],
+ ["B5",0xB5],
+ ["A6",0xB6],
+ ["E1",0xB7],
+ ["FC",0xB8],
+ ["BC",0xBA],
+ ["C8",0xBB],
+ ["C0",0xBF],
+ ["CB",0xC0],
+ ["E7",0xC1],
+ ["E5",0xC2],
+ ["CC",0xC3],
+ ["80",0xC4],
+ ["81",0xC5],
+ ["AE",0xC6],
+ ["82",0xC7],
+ ["E9",0xC8],
+ ["83",0xC9],
+ ["E6",0xCA],
+ ["E8",0xCB],
+ ["ED",0xCC],
+ ["EA",0xCD],
+ ["EB",0xCE],
+ ["EC",0xCF],
+ ["84",0xD1],
+ ["F1",0xD2],
+ ["EE",0xD3],
+ ["EF",0xD4],
+ ["CD",0xD5],
+ ["85",0xD6],
+ ["AF",0xD8],
+ ["F4",0xD9],
+ ["F2",0xDA],
+ ["F3",0xDB],
+ ["86",0xDC],
+ ["A7",0xDF],
+ ["88",0xE0],
+ ["87",0xE1],
+ ["89",0xE2],
+ ["8B",0xE3],
+ ["8A",0xE4],
+ ["8C",0xE5],
+ ["BE",0xE6],
+ ["8D",0xE7],
+ ["8F",0xE8],
+ ["8E",0xE9],
+ ["90",0xEA],
+ ["91",0xEB],
+ ["93",0xEC],
+ ["92",0xED],
+ ["94",0xEE],
+ ["95",0xEF],
+ ["96",0xF1],
+ ["98",0xF2],
+ ["97",0xF3],
+ ["99",0xF4],
+ ["9B",0xF5],
+ ["9A",0xF6],
+ ["D6",0xF7],
+ ["BF",0xF8],
+ ["9D",0xF9],
+ ["9C",0xFA],
+ ["9E",0xFB],
+ ["9F",0xFC],
+ ["D8",0xFF],
+ ["F5",0x131],
+ ["CE",0x152],
+ ["CF",0x153],
+ ["D9",0x178],
+ ["C4",0x192],
+ ["F6",0x2C6],
+ ["FF",0x2C7],
+ ["F9",0x2D8],
+ ["FA",0x2D9],
+ ["FB",0x2DA],
+ ["FE",0x2DB],
+ ["F7",0x2DC],
+ ["FD",0x2DD],
+ ["B9",0x3C0],
+ ["D0",0x2013],
+ ["D1",0x2014],
+ ["D4",0x2018],
+ ["D5",0x2019],
+ ["E2",0x201A],
+ ["D2",0x201C],
+ ["D3",0x201D],
+ ["E3",0x201E],
+ ["A0",0x2020],
+ ["E0",0x2021],
+ ["A5",0x2022],
+ ["C9",0x2026],
+ ["E4",0x2030],
+ ["DC",0x2039],
+ ["DD",0x203A],
+ ["DA",0x2044],
+ ["AA",0x2122],
+ ["BD",0x2126],
+ ["B6",0x2202],
+ ["C6",0x2206],
+ ["B8",0x220F],
+ ["B7",0x2211],
+ ["C3",0x221A],
+ ["B0",0x221E],
+ ["BA",0x222B],
+ ["C5",0x2248],
+ ["AD",0x2260],
+ ["B2",0x2264],
+ ["B3",0x2265],
+ ["D7",0x25CA],
+ ["DE",0xFB01],
+ ["DF",0xFB02],
+] \ No newline at end of file
diff --git a/enc/trans/macromania-tbl.rb b/enc/trans/macromania-tbl.rb
new file mode 100644
index 0000000000..ff95c5e957
--- /dev/null
+++ b/enc/trans/macromania-tbl.rb
@@ -0,0 +1,129 @@
+MACROMANIA_TO_UCS_TBL = [
+ ["CA",0xA0],
+ ["C1",0xA1],
+ ["A2",0xA2],
+ ["A3",0xA3],
+ ["DB",0xA4],
+ ["B4",0xA5],
+ ["A4",0xA7],
+ ["AC",0xA8],
+ ["A9",0xA9],
+ ["BB",0xAA],
+ ["C7",0xAB],
+ ["C2",0xAC],
+ ["A8",0xAE],
+ ["F8",0xAF],
+ ["A1",0xB0],
+ ["B1",0xB1],
+ ["AB",0xB4],
+ ["B5",0xB5],
+ ["A6",0xB6],
+ ["E1",0xB7],
+ ["FC",0xB8],
+ ["BC",0xBA],
+ ["C8",0xBB],
+ ["C0",0xBF],
+ ["CB",0xC0],
+ ["E7",0xC1],
+ ["E5",0xC2],
+ ["CC",0xC3],
+ ["80",0xC4],
+ ["81",0xC5],
+ ["82",0xC7],
+ ["E9",0xC8],
+ ["83",0xC9],
+ ["E6",0xCA],
+ ["E8",0xCB],
+ ["ED",0xCC],
+ ["EA",0xCD],
+ ["EB",0xCE],
+ ["EC",0xCF],
+ ["84",0xD1],
+ ["F1",0xD2],
+ ["EE",0xD3],
+ ["EF",0xD4],
+ ["CD",0xD5],
+ ["85",0xD6],
+ ["F4",0xD9],
+ ["F2",0xDA],
+ ["F3",0xDB],
+ ["86",0xDC],
+ ["A7",0xDF],
+ ["88",0xE0],
+ ["87",0xE1],
+ ["89",0xE2],
+ ["8B",0xE3],
+ ["8A",0xE4],
+ ["8C",0xE5],
+ ["8D",0xE7],
+ ["8F",0xE8],
+ ["8E",0xE9],
+ ["90",0xEA],
+ ["91",0xEB],
+ ["93",0xEC],
+ ["92",0xED],
+ ["94",0xEE],
+ ["95",0xEF],
+ ["96",0xF1],
+ ["98",0xF2],
+ ["97",0xF3],
+ ["99",0xF4],
+ ["9B",0xF5],
+ ["9A",0xF6],
+ ["D6",0xF7],
+ ["9D",0xF9],
+ ["9C",0xFA],
+ ["9E",0xFB],
+ ["9F",0xFC],
+ ["D8",0xFF],
+ ["AE",0x102],
+ ["BE",0x103],
+ ["F5",0x131],
+ ["CE",0x152],
+ ["CF",0x153],
+ ["AF",0x15E],
+ ["BF",0x15F],
+ ["DE",0x162],
+ ["DF",0x163],
+ ["D9",0x178],
+ ["C4",0x192],
+ ["F6",0x2C6],
+ ["FF",0x2C7],
+ ["F9",0x2D8],
+ ["FA",0x2D9],
+ ["FB",0x2DA],
+ ["FE",0x2DB],
+ ["F7",0x2DC],
+ ["FD",0x2DD],
+ ["B9",0x3C0],
+ ["D0",0x2013],
+ ["D1",0x2014],
+ ["D4",0x2018],
+ ["D5",0x2019],
+ ["E2",0x201A],
+ ["D2",0x201C],
+ ["D3",0x201D],
+ ["E3",0x201E],
+ ["A0",0x2020],
+ ["E0",0x2021],
+ ["A5",0x2022],
+ ["C9",0x2026],
+ ["E4",0x2030],
+ ["DC",0x2039],
+ ["DD",0x203A],
+ ["DA",0x2044],
+ ["AA",0x2122],
+ ["BD",0x2126],
+ ["B6",0x2202],
+ ["C6",0x2206],
+ ["B8",0x220F],
+ ["B7",0x2211],
+ ["C3",0x221A],
+ ["B0",0x221E],
+ ["BA",0x222B],
+ ["C5",0x2248],
+ ["AD",0x2260],
+ ["B2",0x2264],
+ ["B3",0x2265],
+ ["D7",0x25CA],
+] \ No newline at end of file
diff --git a/enc/trans/macturkish-tbl.rb b/enc/trans/macturkish-tbl.rb
new file mode 100644
index 0000000000..2358672ed6
--- /dev/null
+++ b/enc/trans/macturkish-tbl.rb
@@ -0,0 +1,128 @@
+MACTURKISH_TO_UCS_TBL = [
+ ["CA",0xA0],
+ ["C1",0xA1],
+ ["A2",0xA2],
+ ["A3",0xA3],
+ ["B4",0xA5],
+ ["A4",0xA7],
+ ["AC",0xA8],
+ ["A9",0xA9],
+ ["BB",0xAA],
+ ["C7",0xAB],
+ ["C2",0xAC],
+ ["A8",0xAE],
+ ["F8",0xAF],
+ ["A1",0xB0],
+ ["B1",0xB1],
+ ["AB",0xB4],
+ ["B5",0xB5],
+ ["A6",0xB6],
+ ["E1",0xB7],
+ ["FC",0xB8],
+ ["BC",0xBA],
+ ["C8",0xBB],
+ ["C0",0xBF],
+ ["CB",0xC0],
+ ["E7",0xC1],
+ ["E5",0xC2],
+ ["CC",0xC3],
+ ["80",0xC4],
+ ["81",0xC5],
+ ["AE",0xC6],
+ ["82",0xC7],
+ ["E9",0xC8],
+ ["83",0xC9],
+ ["E6",0xCA],
+ ["E8",0xCB],
+ ["ED",0xCC],
+ ["EA",0xCD],
+ ["EB",0xCE],
+ ["EC",0xCF],
+ ["84",0xD1],
+ ["F1",0xD2],
+ ["EE",0xD3],
+ ["EF",0xD4],
+ ["CD",0xD5],
+ ["85",0xD6],
+ ["AF",0xD8],
+ ["F4",0xD9],
+ ["F2",0xDA],
+ ["F3",0xDB],
+ ["86",0xDC],
+ ["A7",0xDF],
+ ["88",0xE0],
+ ["87",0xE1],
+ ["89",0xE2],
+ ["8B",0xE3],
+ ["8A",0xE4],
+ ["8C",0xE5],
+ ["BE",0xE6],
+ ["8D",0xE7],
+ ["8F",0xE8],
+ ["8E",0xE9],
+ ["90",0xEA],
+ ["91",0xEB],
+ ["93",0xEC],
+ ["92",0xED],
+ ["94",0xEE],
+ ["95",0xEF],
+ ["96",0xF1],
+ ["98",0xF2],
+ ["97",0xF3],
+ ["99",0xF4],
+ ["9B",0xF5],
+ ["9A",0xF6],
+ ["D6",0xF7],
+ ["BF",0xF8],
+ ["9D",0xF9],
+ ["9C",0xFA],
+ ["9E",0xFB],
+ ["9F",0xFC],
+ ["D8",0xFF],
+ ["DA",0x11E],
+ ["DB",0x11F],
+ ["DC",0x130],
+ ["DD",0x131],
+ ["CE",0x152],
+ ["CF",0x153],
+ ["DE",0x15E],
+ ["DF",0x15F],
+ ["D9",0x178],
+ ["C4",0x192],
+ ["F6",0x2C6],
+ ["FF",0x2C7],
+ ["F9",0x2D8],
+ ["FA",0x2D9],
+ ["FB",0x2DA],
+ ["FE",0x2DB],
+ ["F7",0x2DC],
+ ["FD",0x2DD],
+ ["B9",0x3C0],
+ ["D0",0x2013],
+ ["D1",0x2014],
+ ["D4",0x2018],
+ ["D5",0x2019],
+ ["E2",0x201A],
+ ["D2",0x201C],
+ ["D3",0x201D],
+ ["E3",0x201E],
+ ["A0",0x2020],
+ ["E0",0x2021],
+ ["A5",0x2022],
+ ["C9",0x2026],
+ ["E4",0x2030],
+ ["AA",0x2122],
+ ["BD",0x2126],
+ ["B6",0x2202],
+ ["C6",0x2206],
+ ["B8",0x220F],
+ ["B7",0x2211],
+ ["C3",0x221A],
+ ["B0",0x221E],
+ ["BA",0x222B],
+ ["C5",0x2248],
+ ["AD",0x2260],
+ ["B2",0x2264],
+ ["B3",0x2265],
+ ["D7",0x25CA],
+] \ No newline at end of file
diff --git a/enc/trans/macukraine-tbl.rb b/enc/trans/macukraine-tbl.rb
new file mode 100644
index 0000000000..6941af654d
--- /dev/null
+++ b/enc/trans/macukraine-tbl.rb
@@ -0,0 +1,130 @@
+MACUKRAINE_TO_UCS_TBL = [
+ ["CA",0xA0],
+ ["A3",0xA3],
+ ["FF",0xA4],
+ ["A4",0xA7],
+ ["A9",0xA9],
+ ["C7",0xAB],
+ ["C2",0xAC],
+ ["A8",0xAE],
+ ["A1",0xB0],
+ ["B1",0xB1],
+ ["B5",0xB5],
+ ["A6",0xB6],
+ ["C8",0xBB],
+ ["D6",0xF7],
+ ["C4",0x192],
+ ["DD",0x401],
+ ["AB",0x402],
+ ["AE",0x403],
+ ["B8",0x404],
+ ["C1",0x405],
+ ["A7",0x406],
+ ["BA",0x407],
+ ["B7",0x408],
+ ["BC",0x409],
+ ["BE",0x40A],
+ ["CB",0x40B],
+ ["CD",0x40C],
+ ["D8",0x40E],
+ ["DA",0x40F],
+ ["80",0x410],
+ ["81",0x411],
+ ["82",0x412],
+ ["83",0x413],
+ ["84",0x414],
+ ["85",0x415],
+ ["86",0x416],
+ ["87",0x417],
+ ["88",0x418],
+ ["89",0x419],
+ ["8A",0x41A],
+ ["8B",0x41B],
+ ["8C",0x41C],
+ ["8D",0x41D],
+ ["8E",0x41E],
+ ["8F",0x41F],
+ ["90",0x420],
+ ["91",0x421],
+ ["92",0x422],
+ ["93",0x423],
+ ["94",0x424],
+ ["95",0x425],
+ ["96",0x426],
+ ["97",0x427],
+ ["98",0x428],
+ ["99",0x429],
+ ["9A",0x42A],
+ ["9B",0x42B],
+ ["9C",0x42C],
+ ["9D",0x42D],
+ ["9E",0x42E],
+ ["9F",0x42F],
+ ["E0",0x430],
+ ["E1",0x431],
+ ["E2",0x432],
+ ["E3",0x433],
+ ["E4",0x434],
+ ["E5",0x435],
+ ["E6",0x436],
+ ["E7",0x437],
+ ["E8",0x438],
+ ["E9",0x439],
+ ["EA",0x43A],
+ ["EB",0x43B],
+ ["EC",0x43C],
+ ["ED",0x43D],
+ ["EE",0x43E],
+ ["EF",0x43F],
+ ["F0",0x440],
+ ["F1",0x441],
+ ["F2",0x442],
+ ["F3",0x443],
+ ["F4",0x444],
+ ["F5",0x445],
+ ["F6",0x446],
+ ["F7",0x447],
+ ["F8",0x448],
+ ["F9",0x449],
+ ["FA",0x44A],
+ ["FB",0x44B],
+ ["FC",0x44C],
+ ["FD",0x44D],
+ ["FE",0x44E],
+ ["DF",0x44F],
+ ["DE",0x451],
+ ["AC",0x452],
+ ["AF",0x453],
+ ["B9",0x454],
+ ["CF",0x455],
+ ["B4",0x456],
+ ["BB",0x457],
+ ["C0",0x458],
+ ["BD",0x459],
+ ["BF",0x45A],
+ ["CC",0x45B],
+ ["CE",0x45C],
+ ["D9",0x45E],
+ ["DB",0x45F],
+ ["A2",0x490],
+ ["B6",0x491],
+ ["D0",0x2013],
+ ["D1",0x2014],
+ ["D4",0x2018],
+ ["D5",0x2019],
+ ["D2",0x201C],
+ ["D3",0x201D],
+ ["D7",0x201E],
+ ["A0",0x2020],
+ ["A5",0x2022],
+ ["C9",0x2026],
+ ["DC",0x2116],
+ ["AA",0x2122],
+ ["C6",0x2206],
+ ["C3",0x221A],
+ ["B0",0x221E],
+ ["C5",0x2248],
+ ["AD",0x2260],
+ ["B2",0x2264],
+ ["B3",0x2265],
+] \ No newline at end of file
diff --git a/enc/trans/single_byte.trans b/enc/trans/single_byte.trans
index f46fd1055b..80bd3f9ae2 100644
--- a/enc/trans/single_byte.trans
+++ b/enc/trans/single_byte.trans
@@ -53,9 +53,26 @@
transcode_tblgen_singlebyte "WINDOWS-1255"
transcode_tblgen_singlebyte "WINDOWS-1256"
transcode_tblgen_singlebyte "WINDOWS-1257"
+ transcode_tblgen_singlebyte "IBM437"
+ transcode_tblgen_singlebyte "IBM775"
+ transcode_tblgen_singlebyte "IBM852"
+ transcode_tblgen_singlebyte "IBM855"
+ transcode_tblgen_singlebyte "IBM857"
+ transcode_tblgen_singlebyte "IBM860"
+ transcode_tblgen_singlebyte "IBM861"
+ transcode_tblgen_singlebyte "IBM862"
+ transcode_tblgen_singlebyte "IBM863"
+ transcode_tblgen_singlebyte "IBM865"
+ transcode_tblgen_singlebyte "IBM866"
+ transcode_tblgen_singlebyte "IBM869"
transcode_tblgen_singlebyte "MACCROATIAN"
transcode_tblgen_singlebyte "MACCYRILLIC"
+ transcode_tblgen_singlebyte "MACGREEK"
transcode_tblgen_singlebyte "MACICELAND"
+ transcode_tblgen_singlebyte "MACROMAN"
+ transcode_tblgen_singlebyte "MACROMANIA"
+ transcode_tblgen_singlebyte "MACTURKISH"
+ transcode_tblgen_singlebyte "MACUKRAINE"
%>
<%= transcode_generated_code %>
diff --git a/test/ruby/test_transcode.rb b/test/ruby/test_transcode.rb
index abd337e339..6e2bc6ce63 100644
--- a/test/ruby/test_transcode.rb
+++ b/test/ruby/test_transcode.rb
@@ -417,6 +417,251 @@ class TestTranscode < Test::Unit::TestCase
check_both_ways("\u02D9", "\xFF", 'windows-1257') # ˙
end
+ def test_IBM437
+ check_both_ways("\u00C7", "\x80", 'IBM437') # Ç
+ check_both_ways("\u00C5", "\x8F", 'IBM437') # Å
+ check_both_ways("\u00C9", "\x90", 'IBM437') # É
+ check_both_ways("\u0192", "\x9F", 'IBM437') # ƒ
+ check_both_ways("\u00E1", "\xA0", 'IBM437') # á
+ check_both_ways("\u00BB", "\xAF", 'IBM437') # »
+ check_both_ways("\u2591", "\xB0", 'IBM437') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM437') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM437') # └
+ check_both_ways("\u2567", "\xCF", 'IBM437') # ╧
+ check_both_ways("\u2568", "\xD0", 'IBM437') # ╨
+ check_both_ways("\u2580", "\xDF", 'IBM437') # ▀
+ check_both_ways("\u03B1", "\xE0", 'IBM437') # α
+ check_both_ways("\u2229", "\xEF", 'IBM437') # ∩
+ check_both_ways("\u2261", "\xF0", 'IBM437') # ≡
+ check_both_ways("\u00A0", "\xFF", 'IBM437') # non-breaking space
+ end
+
+ def test_IBM775
+ check_both_ways("\u0106", "\x80", 'IBM775') # Ć
+ check_both_ways("\u00C5", "\x8F", 'IBM775') # Å
+ check_both_ways("\u00C9", "\x90", 'IBM775') # É
+ check_both_ways("\u00A4", "\x9F", 'IBM775') # ¤
+ check_both_ways("\u0100", "\xA0", 'IBM775') # Ā
+ check_both_ways("\u00BB", "\xAF", 'IBM775') # »
+ check_both_ways("\u2591", "\xB0", 'IBM775') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM775') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM775') # └
+ check_both_ways("\u017D", "\xCF", 'IBM775') # Ž
+ check_both_ways("\u0105", "\xD0", 'IBM775') # ą
+ check_both_ways("\u2580", "\xDF", 'IBM775') # ▀
+ check_both_ways("\u00D3", "\xE0", 'IBM775') # Ó
+ check_both_ways("\u2019", "\xEF", 'IBM775') # ’
+ check_both_ways("\u00AD", "\xF0", 'IBM775') # osft hyphen
+ check_both_ways("\u00A0", "\xFF", 'IBM775') # non-breaking space
+ end
+
+ def test_IBM852
+ check_both_ways("\u00C7", "\x80", 'IBM852') # Ç
+ check_both_ways("\u0106", "\x8F", 'IBM852') # Ć
+ check_both_ways("\u00C9", "\x90", 'IBM852') # É
+ check_both_ways("\u010D", "\x9F", 'IBM852') # č
+ check_both_ways("\u00E1", "\xA0", 'IBM852') # á
+ check_both_ways("\u00BB", "\xAF", 'IBM852') # »
+ check_both_ways("\u2591", "\xB0", 'IBM852') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM852') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM852') # └
+ check_both_ways("\u00A4", "\xCF", 'IBM852') # ¤
+ check_both_ways("\u0111", "\xD0", 'IBM852') # đ
+ check_both_ways("\u2580", "\xDF", 'IBM852') # ▀
+ check_both_ways("\u00D3", "\xE0", 'IBM852') # Ó
+ check_both_ways("\u00B4", "\xEF", 'IBM852') # ´
+ check_both_ways("\u00AD", "\xF0", 'IBM852') # osft hyphen
+ check_both_ways("\u00A0", "\xFF", 'IBM852') # non-breaking space
+ end
+
+ def test_IBM855
+ check_both_ways("\u0452", "\x80", 'IBM855') # ђ
+ check_both_ways("\u0408", "\x8F", 'IBM855') # Ј
+ check_both_ways("\u0459", "\x90", 'IBM855') # љ
+ check_both_ways("\u042A", "\x9F", 'IBM855') # Ъ
+ check_both_ways("\u0430", "\xA0", 'IBM855') # а
+ check_both_ways("\u00BB", "\xAF", 'IBM855') # »
+ check_both_ways("\u2591", "\xB0", 'IBM855') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM855') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM855') # └
+ check_both_ways("\u00A4", "\xCF", 'IBM855') # ¤
+ check_both_ways("\u043B", "\xD0", 'IBM855') # л
+ check_both_ways("\u2580", "\xDF", 'IBM855') # ▀
+ check_both_ways("\u042F", "\xE0", 'IBM855') # Я
+ check_both_ways("\u2116", "\xEF", 'IBM855') # №
+ check_both_ways("\u00AD", "\xF0", 'IBM855') # osft hyphen
+ check_both_ways("\u00A0", "\xFF", 'IBM855') # non-breaking space
+ end
+
+ def test_IBM857
+ check_both_ways("\u00C7", "\x80", 'IBM857') # Ç
+ check_both_ways("\u00C5", "\x8F", 'IBM857') # Å
+ check_both_ways("\u00C9", "\x90", 'IBM857') # É
+ check_both_ways("\u015F", "\x9F", 'IBM857') # ş
+ check_both_ways("\u00E1", "\xA0", 'IBM857') # á
+ check_both_ways("\u00BB", "\xAF", 'IBM857') # »
+ check_both_ways("\u2591", "\xB0", 'IBM857') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM857') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM857') # └
+ check_both_ways("\u00A4", "\xCF", 'IBM857') # ¤
+ check_both_ways("\u00BA", "\xD0", 'IBM857') # º
+ check_both_ways("\u00C8", "\xD4", 'IBM857') # È
+ assert_raise(Encoding::UndefinedConversionError) { "\xD5".encode("utf-8", 'IBM857') }
+ check_both_ways("\u00CD", "\xD6", 'IBM857') # Í
+ check_both_ways("\u2580", "\xDF", 'IBM857') # ▀
+ check_both_ways("\u00D3", "\xE0", 'IBM857') # Ó
+ check_both_ways("\u00B5", "\xE6", 'IBM857') # µ
+ assert_raise(Encoding::UndefinedConversionError) { "\xE7".encode("utf-8", 'IBM857') }
+ check_both_ways("\u00D7", "\xE8", 'IBM857') # ×
+ check_both_ways("\u00B4", "\xEF", 'IBM857') # ´
+ check_both_ways("\u00AD", "\xF0", 'IBM857') # soft hyphen
+ check_both_ways("\u00B1", "\xF1", 'IBM857') # ±
+ assert_raise(Encoding::UndefinedConversionError) { "\xF2".encode("utf-8", 'IBM857') }
+ check_both_ways("\u00BE", "\xF3", 'IBM857') # ¾
+ check_both_ways("\u00A0", "\xFF", 'IBM857') # non-breaking space
+ end
+
+ def test_IBM860
+ check_both_ways("\u00C7", "\x80", 'IBM860') # Ç
+ check_both_ways("\u00C2", "\x8F", 'IBM860') # Â
+ check_both_ways("\u00C9", "\x90", 'IBM860') # É
+ check_both_ways("\u00D3", "\x9F", 'IBM860') # Ó
+ check_both_ways("\u00E1", "\xA0", 'IBM860') # á
+ check_both_ways("\u00BB", "\xAF", 'IBM860') # »
+ check_both_ways("\u2591", "\xB0", 'IBM860') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM860') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM860') # └
+ check_both_ways("\u2567", "\xCF", 'IBM860') # ╧
+ check_both_ways("\u2568", "\xD0", 'IBM860') # ╨
+ check_both_ways("\u2580", "\xDF", 'IBM860') # ▀
+ check_both_ways("\u03B1", "\xE0", 'IBM860') # α
+ check_both_ways("\u2229", "\xEF", 'IBM860') # ∩
+ check_both_ways("\u2261", "\xF0", 'IBM860') # ≡
+ check_both_ways("\u00A0", "\xFF", 'IBM860') # non-breaking space
+ end
+
+ def test_IBM861
+ check_both_ways("\u00C7", "\x80", 'IBM861') # Ç
+ check_both_ways("\u00C5", "\x8F", 'IBM861') # Å
+ check_both_ways("\u00C9", "\x90", 'IBM861') # É
+ check_both_ways("\u0192", "\x9F", 'IBM861') # ƒ
+ check_both_ways("\u00E1", "\xA0", 'IBM861') # á
+ check_both_ways("\u00BB", "\xAF", 'IBM861') # »
+ check_both_ways("\u2591", "\xB0", 'IBM861') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM861') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM861') # └
+ check_both_ways("\u2567", "\xCF", 'IBM861') # ╧
+ check_both_ways("\u2568", "\xD0", 'IBM861') # ╨
+ check_both_ways("\u2580", "\xDF", 'IBM861') # ▀
+ check_both_ways("\u03B1", "\xE0", 'IBM861') # α
+ check_both_ways("\u2229", "\xEF", 'IBM861') # ∩
+ check_both_ways("\u2261", "\xF0", 'IBM861') # ≡
+ check_both_ways("\u00A0", "\xFF", 'IBM861') # non-breaking space
+ end
+
+ def test_IBM862
+ check_both_ways("\u05D0", "\x80", 'IBM862') # א
+ check_both_ways("\u05DF", "\x8F", 'IBM862') # ן
+ check_both_ways("\u05E0", "\x90", 'IBM862') # נ
+ check_both_ways("\u0192", "\x9F", 'IBM862') # ƒ
+ check_both_ways("\u00E1", "\xA0", 'IBM862') # á
+ check_both_ways("\u00BB", "\xAF", 'IBM862') # »
+ check_both_ways("\u2591", "\xB0", 'IBM862') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM862') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM862') # └
+ check_both_ways("\u2567", "\xCF", 'IBM862') # ╧
+ check_both_ways("\u2568", "\xD0", 'IBM862') # ╨
+ check_both_ways("\u2580", "\xDF", 'IBM862') # ▀
+ check_both_ways("\u03B1", "\xE0", 'IBM862') # α
+ check_both_ways("\u2229", "\xEF", 'IBM862') # ∩
+ check_both_ways("\u2261", "\xF0", 'IBM862') # ≡
+ check_both_ways("\u00A0", "\xFF", 'IBM862') # non-breaking space
+ end
+
+ def test_IBM863
+ check_both_ways("\u00C7", "\x80", 'IBM863') # Ç
+ check_both_ways("\u00A7", "\x8F", 'IBM863') # §
+ check_both_ways("\u00C9", "\x90", 'IBM863') # É
+ check_both_ways("\u0192", "\x9F", 'IBM863') # ƒ
+ check_both_ways("\u00A6", "\xA0", 'IBM863') # ¦
+ check_both_ways("\u00BB", "\xAF", 'IBM863') # »
+ check_both_ways("\u2591", "\xB0", 'IBM863') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM863') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM863') # └
+ check_both_ways("\u2567", "\xCF", 'IBM863') # ╧
+ check_both_ways("\u2568", "\xD0", 'IBM863') # ╨
+ check_both_ways("\u2580", "\xDF", 'IBM863') # ▀
+ check_both_ways("\u03B1", "\xE0", 'IBM863') # α
+ check_both_ways("\u2229", "\xEF", 'IBM863') # ∩
+ check_both_ways("\u2261", "\xF0", 'IBM863') # ≡
+ check_both_ways("\u00A0", "\xFF", 'IBM863') # non-breaking space
+ end
+
+ def test_IBM865
+ check_both_ways("\u00C7", "\x80", 'IBM865') # Ç
+ check_both_ways("\u00C5", "\x8F", 'IBM865') # Å
+ check_both_ways("\u00C9", "\x90", 'IBM865') # É
+ check_both_ways("\u0192", "\x9F", 'IBM865') # ƒ
+ check_both_ways("\u00E1", "\xA0", 'IBM865') # á
+ check_both_ways("\u00A4", "\xAF", 'IBM865') # ¤
+ check_both_ways("\u2591", "\xB0", 'IBM865') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM865') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM865') # └
+ check_both_ways("\u2567", "\xCF", 'IBM865') # ╧
+ check_both_ways("\u2568", "\xD0", 'IBM865') # ╨
+ check_both_ways("\u2580", "\xDF", 'IBM865') # ▀
+ check_both_ways("\u03B1", "\xE0", 'IBM865') # α
+ check_both_ways("\u2229", "\xEF", 'IBM865') # ∩
+ check_both_ways("\u2261", "\xF0", 'IBM865') # ≡
+ check_both_ways("\u00A0", "\xFF", 'IBM865') # non-breaking space
+ end
+
+ def test_IBM866
+ check_both_ways("\u0410", "\x80", 'IBM866') # А
+ check_both_ways("\u041F", "\x8F", 'IBM866') # П
+ check_both_ways("\u0420", "\x90", 'IBM866') # Р
+ check_both_ways("\u042F", "\x9F", 'IBM866') # Я
+ check_both_ways("\u0430", "\xA0", 'IBM866') # а
+ check_both_ways("\u043F", "\xAF", 'IBM866') # п
+ check_both_ways("\u2591", "\xB0", 'IBM866') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM866') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM866') # └
+ check_both_ways("\u2567", "\xCF", 'IBM866') # ╧
+ check_both_ways("\u2568", "\xD0", 'IBM866') # ╨
+ check_both_ways("\u2580", "\xDF", 'IBM866') # ▀
+ check_both_ways("\u0440", "\xE0", 'IBM866') # р
+ check_both_ways("\u044F", "\xEF", 'IBM866') # я
+ check_both_ways("\u0401", "\xF0", 'IBM866') # Ё
+ check_both_ways("\u00A0", "\xFF", 'IBM866') # non-breaking space
+ end
+
+ def test_IBM869
+ assert_raise(Encoding::UndefinedConversionError) { "\x80".encode("utf-8", 'IBM869') }
+ assert_raise(Encoding::UndefinedConversionError) { "\x85".encode("utf-8", 'IBM869') }
+ check_both_ways("\u0386", "\x86", 'IBM869') # Ά
+ assert_raise(Encoding::UndefinedConversionError) { "\x87".encode("utf-8", 'IBM869') }
+ check_both_ways("\u00B7", "\x88", 'IBM869') # ·
+ check_both_ways("\u0389", "\x8F", 'IBM869') # Ή
+ check_both_ways("\u038A", "\x90", 'IBM869') # Ί
+ check_both_ways("\u038C", "\x92", 'IBM869') # Ό
+ assert_raise(Encoding::UndefinedConversionError) { "\x93".encode("utf-8", 'IBM869') }
+ assert_raise(Encoding::UndefinedConversionError) { "\x94".encode("utf-8", 'IBM869') }
+ check_both_ways("\u038E", "\x95", 'IBM869') # Ύ
+ check_both_ways("\u03AF", "\x9F", 'IBM869') # ί
+ check_both_ways("\u03CA", "\xA0", 'IBM869') # ϊ
+ check_both_ways("\u00BB", "\xAF", 'IBM869') # »
+ check_both_ways("\u2591", "\xB0", 'IBM869') # ░
+ check_both_ways("\u2510", "\xBF", 'IBM869') # ┐
+ check_both_ways("\u2514", "\xC0", 'IBM869') # └
+ check_both_ways("\u03A3", "\xCF", 'IBM869') # Σ
+ check_both_ways("\u03A4", "\xD0", 'IBM869') # Τ
+ check_both_ways("\u2580", "\xDF", 'IBM869') # ▀
+ check_both_ways("\u03B6", "\xE0", 'IBM869') # ζ
+ check_both_ways("\u0384", "\xEF", 'IBM869') # ΄
+ check_both_ways("\u00AD", "\xF0", 'IBM869') # soft hyphen
+ check_both_ways("\u00A0", "\xFF", 'IBM869') # non-breaking space
+ end
+
def test_macCroatian
check_both_ways("\u00C4", "\x80", 'macCroatian') # Ä
check_both_ways("\u00E8", "\x8F", 'macCroatian') # è
@@ -471,6 +716,27 @@ class TestTranscode < Test::Unit::TestCase
check_both_ways("\u00A4", "\xFF", 'macCyrillic') # ¤
end
+ def test_macGreek
+ check_both_ways("\u00C4", "\x80", 'macGreek') # Ä
+ check_both_ways("\u00E8", "\x8F", 'macGreek') # è
+ check_both_ways("\u00EA", "\x90", 'macGreek') # ê
+ check_both_ways("\u00FC", "\x9F", 'macGreek') # ü
+ check_both_ways("\u2020", "\xA0", 'macGreek') # †
+ check_both_ways("\u0393", "\xA1", 'macGreek') # Γ
+ check_both_ways("\u0387", "\xAF", 'macGreek') # ·
+ check_both_ways("\u0391", "\xB0", 'macGreek') # Α
+ check_both_ways("\u03A9", "\xBF", 'macGreek') # Ω
+ check_both_ways("\u03AC", "\xC0", 'macGreek') # ά
+ check_both_ways("\u0153", "\xCF", 'macGreek') # œ
+ check_both_ways("\u2013", "\xD0", 'macGreek') # –
+ check_both_ways("\u038F", "\xDF", 'macGreek') # Ώ
+ check_both_ways("\u03CD", "\xE0", 'macGreek') # ύ
+ check_both_ways("\u03BF", "\xEF", 'macGreek') # ο
+ check_both_ways("\u03C0", "\xF0", 'macGreek') # π
+ check_both_ways("\u03B0", "\xFE", 'macGreek') # ΰ
+ assert_raise(Encoding::UndefinedConversionError) { "\xFF".encode("utf-8", 'macGreek') }
+ end
+
def test_macIceland
check_both_ways("\u00C4", "\x80", 'macIceland') # Ä
check_both_ways("\u00E8", "\x8F", 'macIceland') # è
@@ -490,6 +756,87 @@ class TestTranscode < Test::Unit::TestCase
check_both_ways("\u02C7", "\xFF", 'macIceland') # ˇ
end
+ def test_macRoman
+ check_both_ways("\u00C4", "\x80", 'macRoman') # Ä
+ check_both_ways("\u00E8", "\x8F", 'macRoman') # è
+ check_both_ways("\u00EA", "\x90", 'macRoman') # ê
+ check_both_ways("\u00FC", "\x9F", 'macRoman') # ü
+ check_both_ways("\u2020", "\xA0", 'macRoman') # †
+ #check_both_ways("\u00DB", "\xAF", 'macRoman') # Ø
+ check_both_ways("\u221E", "\xB0", 'macRoman') # ∞
+ check_both_ways("\u00F8", "\xBF", 'macRoman') # ø
+ check_both_ways("\u00BF", "\xC0", 'macRoman') # ¿
+ check_both_ways("\u0153", "\xCF", 'macRoman') # œ
+ check_both_ways("\u2013", "\xD0", 'macRoman') # –
+ check_both_ways("\u00A4", "\xDB", 'macRoman') # ¤
+ check_both_ways("\uFB02", "\xDF", 'macRoman') # fl
+ check_both_ways("\u2021", "\xE0", 'macRoman') # ‡
+ check_both_ways("\u00D4", "\xEF", 'macRoman') # Ô
+ #check_both_ways("\uF8FF", "\xF0", 'macRoman') # Apple logo
+ check_both_ways("\u02C7", "\xFF", 'macRoman') # ˇ
+ end
+
+ def test_macRomania
+ check_both_ways("\u00C4", "\x80", 'macRomania') # Ä
+ check_both_ways("\u00E8", "\x8F", 'macRomania') # è
+ check_both_ways("\u00EA", "\x90", 'macRomania') # ê
+ check_both_ways("\u00FC", "\x9F", 'macRomania') # ü
+ check_both_ways("\u2020", "\xA0", 'macRomania') # †
+ check_both_ways("\u015E", "\xAF", 'macRomania') # Ş
+ check_both_ways("\u221E", "\xB0", 'macRomania') # ∞
+ check_both_ways("\u015F", "\xBF", 'macRomania') # ş
+ check_both_ways("\u00BF", "\xC0", 'macRomania') # ¿
+ check_both_ways("\u0153", "\xCF", 'macRomania') # œ
+ check_both_ways("\u2013", "\xD0", 'macRomania') # –
+ check_both_ways("\u00A4", "\xDB", 'macRomania') # €
+ check_both_ways("\u0163", "\xDF", 'macRomania') # ţ
+ check_both_ways("\u2021", "\xE0", 'macRomania') # ‡
+ check_both_ways("\u00D4", "\xEF", 'macRomania') # Ô
+ #check_both_ways("\uF8FF", "\xF0", 'macRomania') # Apple logo
+ check_both_ways("\u02C7", "\xFF", 'macRomania') # ˇ
+ end
+
+ def test_macTurkish
+ check_both_ways("\u00C4", "\x80", 'macTurkish') # Ä
+ check_both_ways("\u00E8", "\x8F", 'macTurkish') # è
+ check_both_ways("\u00EA", "\x90", 'macTurkish') # ê
+ check_both_ways("\u00FC", "\x9F", 'macTurkish') # ü
+ check_both_ways("\u2020", "\xA0", 'macTurkish') # †
+ check_both_ways("\u00D8", "\xAF", 'macTurkish') # Ø
+ check_both_ways("\u221E", "\xB0", 'macTurkish') # ∞
+ check_both_ways("\u00F8", "\xBF", 'macTurkish') # ø
+ check_both_ways("\u00BF", "\xC0", 'macTurkish') # ¿
+ check_both_ways("\u0153", "\xCF", 'macTurkish') # œ
+ check_both_ways("\u2013", "\xD0", 'macTurkish') # –
+ check_both_ways("\u015F", "\xDF", 'macTurkish') # ş
+ check_both_ways("\u2021", "\xE0", 'macTurkish') # ‡
+ check_both_ways("\u00D4", "\xEF", 'macTurkish') # Ô
+ #check_both_ways("\uF8FF", "\xF0", 'macTurkish') # Apple logo
+ check_both_ways("\u00D9", "\xF4", 'macTurkish') # Ù
+ assert_raise(Encoding::UndefinedConversionError) { "\xF5".encode("utf-8", 'macTurkish') }
+ check_both_ways("\u02C6", "\xF6", 'macTurkish') # ˆ
+ check_both_ways("\u02C7", "\xFF", 'macTurkish') # ˇ
+ end
+
+ def test_macUkraine
+ check_both_ways("\u0410", "\x80", 'macUkraine') # А
+ check_both_ways("\u041F", "\x8F", 'macUkraine') # П
+ check_both_ways("\u0420", "\x90", 'macUkraine') # Р
+ check_both_ways("\u042F", "\x9F", 'macUkraine') # Я
+ check_both_ways("\u2020", "\xA0", 'macUkraine') # †
+ check_both_ways("\u0453", "\xAF", 'macUkraine') # ѓ
+ check_both_ways("\u221E", "\xB0", 'macUkraine') # ∞
+ check_both_ways("\u045A", "\xBF", 'macUkraine') # њ
+ check_both_ways("\u0458", "\xC0", 'macUkraine') # ј
+ check_both_ways("\u0455", "\xCF", 'macUkraine') # ѕ
+ check_both_ways("\u2013", "\xD0", 'macUkraine') # –
+ check_both_ways("\u044F", "\xDF", 'macUkraine') # я
+ check_both_ways("\u0430", "\xE0", 'macUkraine') # а
+ check_both_ways("\u043F", "\xEF", 'macUkraine') # п
+ check_both_ways("\u0440", "\xF0", 'macUkraine') # р
+ check_both_ways("\u00A4", "\xFF", 'macUkraine') # ¤
+ end
+
def check_utf_16_both_ways(utf8, raw)
copy = raw.dup
0.step(copy.length-1, 2) { |i| copy[i+1], copy[i] = copy[i], copy[i+1] }