Commit e5c4a3e1 authored by unknown's avatar unknown
Browse files

Bug#11216: 'show character set' describes latin1 incorrectly

Index.xml:
  Fixing latin1 comment:
  it is actually cp1252, not iso-8859-1
ctype_latin1.result:
  changeing test results accordingly.
ctype-latin1.c:
  Fixed to- and from-Unicode conversion maps
  for better Unicode round trip of undefined
  characters.



strings/ctype-latin1.c:
  Bug#11216: 'show character set' describes latin1 incorrectly
  Fixed to- and from-Unicode conversion maps.
mysql-test/r/ctype_latin1.result:
  changeing test results accordingly.
sql/share/charsets/Index.xml:
  Fixing comment: iso-8859-1 -> cp1252
parent e9687c10
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -168,7 +168,7 @@ hex(a) hex(@u:=convert(a using utf8)) hex(@l:=convert(@u using latin1)) a=@l
7E	7E	7E	1
7F	7F	7F	1
80	E282AC	80	1
81	3F	3F	0
81	C281	81	1
82	E2809A	82	1
83	C692	83	1
84	E2809E	84	1
@@ -180,10 +180,10 @@ hex(a) hex(@u:=convert(a using utf8)) hex(@l:=convert(@u using latin1)) a=@l
8A	C5A0	8A	1
8B	E280B9	8B	1
8C	C592	8C	1
8D	3F	3F	0
8D	C28D	8D	1
8E	C5BD	8E	1
8F	3F	3F	0
90	3F	3F	0
8F	C28F	8F	1
90	C290	90	1
91	E28098	91	1
92	E28099	92	1
93	E2809C	93	1
@@ -196,7 +196,7 @@ hex(a) hex(@u:=convert(a using utf8)) hex(@l:=convert(@u using latin1)) a=@l
9A	C5A1	9A	1
9B	E280BA	9B	1
9C	C593	9C	1
9D	3F	3F	0
9D	C29D	9D	1
9E	C5BE	9E	1
9F	C5B8	9F	1
A0	C2A0	A0	1
+1 −1
Original line number Diff line number Diff line
@@ -106,7 +106,7 @@ To make maintaining easier please:

<charset name="latin1">
  <family>Western</family>
  <description>ISO 8859-1 West European</description>
  <description>cp1252 West European</description>
  <alias>csisolatin1</alias>
  <alias>iso-8859-1</alias>
  <alias>iso-ir-100</alias>
+16 −8
Original line number Diff line number Diff line
@@ -108,6 +108,13 @@ static uchar sort_order_latin1[] = {
   
   - continue to pretend the latin1 character set is ISO 8859-1
   - actually allow the storage of euro etc. so it's actually cp1252

  Also we'll map these five undefined cp1252 character:
    0x81, 0x8D, 0x8F, 0x90, 0x9D
  into corresponding control characters:
     U+0081, U+008D, U+008F, U+0090, U+009D.
  like ISO-8859-1 does. Otherwise, loading "mysqldump"
  output doesn't reproduce these undefined characters.
*/

unsigned short cs_to_uni[256]={
@@ -127,10 +134,10 @@ unsigned short cs_to_uni[256]={
0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,
0x20AC,0x0000,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
0x02C6,0x2030,0x0160,0x2039,0x0152,0x0000,0x017D,0x0000,
0x0000,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
0x02DC,0x2122,0x0161,0x203A,0x0153,0x0000,0x017E,0x0178,
0x20AC,0x0081,0x201A,0x0192,0x201E,0x2026,0x2020,0x2021,
0x02C6,0x2030,0x0160,0x2039,0x0152,0x008D,0x017D,0x008F,
0x0090,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,
0x02DC,0x2122,0x0161,0x203A,0x0153,0x009D,0x017E,0x0178,
0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
@@ -161,10 +168,11 @@ unsigned char pl00[256]={
0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,
0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x8D,0x00,0x8F,
0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x9D,0x00,0x00,

0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,
0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,