Browse Source

iconv: add euro symbol to GBK as single byte 0x80

this is how it's defined in the cp936 document referenced by the IANA
charset registry as defining GBK, and of the mappings defined there,
was the only one missing.

it is not accepted for GB18030, as GB18030 is a UTF and has its own
unique mapping for the euro symbol.
Rich Felker 1 year ago
parent
commit
ca6f46aff1
1 changed files with 4 additions and 0 deletions
  1. 4 0
      src/locale/iconv.c

+ 4 - 0
src/locale/iconv.c

@@ -403,6 +403,10 @@ size_t iconv(iconv_t cd, char **restrict in, size_t *restrict inb, char **restri
 			if (c < 128) break;
 			if (c < 128) break;
 			if (c < 0xa1) goto ilseq;
 			if (c < 0xa1) goto ilseq;
 		case GBK:
 		case GBK:
+			if (c == 128) {
+				c = 0x20ac;
+				break;
+			}
 		case GB18030:
 		case GB18030:
 			if (c < 128) break;
 			if (c < 128) break;
 			c -= 0x81;
 			c -= 0x81;