From f64f13c2a75092b3b1dc2fc85a0860b61888c944 Mon Sep 17 00:00:00 2001 From: Levin Li Date: Thu, 30 Dec 2021 20:47:44 +0800 Subject: [PATCH] Implement NSGB_18030_2000StringEncoding, NSGB_2312_80StringEncoding, NSGBK_95StringEncoding --- Source/Additions/GSMime.m | 4 ++++ Source/Additions/Unicode.m | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Source/Additions/GSMime.m b/Source/Additions/GSMime.m index a376de996..ae3543928 100644 --- a/Source/Additions/GSMime.m +++ b/Source/Additions/GSMime.m @@ -5421,6 +5421,8 @@ appendString(NSMutableData *m, NSUInteger offset, NSUInteger fold, (void*)NSDOSChineseSimplifStringEncoding); NSMapInsert(charsets, (void*)@"cp936", (void*)NSDOSChineseSimplifStringEncoding); + NSMapInsert(charsets, (void*)@"gbk", + (void*)NSDOSChineseSimplifStringEncoding); NSMapInsert(charsets, (void*)@"ibm949", (void*)NSDOSKoreanStringEncoding); NSMapInsert(charsets, (void*)@"cp949", @@ -5659,6 +5661,8 @@ appendString(NSMutableData *m, NSUInteger offset, NSUInteger fold, (void*)@"windows-1258"); NSMapInsert(encodings, (void*)NSWindowsKoreanJohabStringEncoding, (void*)@"windows-1361"); + NSMapInsert(encodings, (void*)NSGB_18030_2000StringEncoding, + (void*)@"gb18030"); #endif } if (headerClass == 0) diff --git a/Source/Additions/Unicode.m b/Source/Additions/Unicode.m index c1367a970..dedd7a99a 100644 --- a/Source/Additions/Unicode.m +++ b/Source/Additions/Unicode.m @@ -314,6 +314,13 @@ static struct _strenc_ str_encoding_table[] = { {NSWindowsKoreanJohabStringEncoding, "NSWindowsKoreanJohabStringEncoding","CP1361",0,0,0}, + {NSGB_2312_80StringEncoding, + "NSGB_2312_80StringEncoding","EUC-CN",0,0,0}, // Same as NSChineseEUCStringEncoding + {NSGBK_95StringEncoding, + "NSGBK_95StringEncoding","CP936",0,0,0}, // Same as NSDOSChineseSimplifStringEncoding + {NSGB_18030_2000StringEncoding, + "NSGB_18030_2000StringEncoding","GB18030",0,0,0}, + /* Now Apple encodings which have high numeric values. */ {NSUTF16BigEndianStringEncoding, @@ -2941,7 +2948,8 @@ GSPrivateCStringEncoding(const char *encoding) || strcmp(encoding, "IBM-932") == 0) enc = NSDOSJapaneseStringEncoding; else if (strcmp(encoding, "CP936") == 0 - || strcmp(encoding, "IBM-936") == 0) + || strcmp(encoding, "IBM-936") == 0 + || strcmp(encoding, "GBK") == 0) enc = NSDOSChineseSimplifStringEncoding; else if (strcmp(encoding, "CP949") == 0 || strcmp(encoding, "IBM-949") == 0) @@ -2964,6 +2972,8 @@ GSPrivateCStringEncoding(const char *encoding) else if (strcmp(encoding, "CP1361") == 0 || strcmp(encoding, "WINDOWS-1361") == 0) enc = NSWindowsKoreanJohabStringEncoding; + else if (strcmp(encoding, "GB18030") == 0) + enc = NSGB_18030_2000StringEncoding; } if (enc == GSUndefinedEncoding)