From 71af3370c43a7fb2e4caad175fbe36b1a2657f42 Mon Sep 17 00:00:00 2001 From: dpasukhi Date: Wed, 28 Oct 2020 15:13:56 +0300 Subject: [PATCH] 0031878: DXF import - support Windows and ISO 8859 code pages in DXF import Add support of converting Big5 and GBK code pages to Unicode within Resource_Unicode::ConvertFormatToUnicode --- src/Resource/Resource_FormatType.hxx | 4 ++++ src/Resource/Resource_Unicode.cxx | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/Resource/Resource_FormatType.hxx b/src/Resource/Resource_FormatType.hxx index 66f4ccc679..62e0c06e04 100644 --- a/src/Resource/Resource_FormatType.hxx +++ b/src/Resource/Resource_FormatType.hxx @@ -51,6 +51,10 @@ enum Resource_FormatType Resource_FormatType_iso8859_8, //!< ISO 8859-8 (Hebrew) encoding Resource_FormatType_iso8859_9, //!< ISO 8859-9 (Turkish) encoding + // Addition code pages + Resource_FormatType_GBK, //!< GBK (UnifiedChinese) encoding + Resource_FormatType_Big5, //!< Big5 (TradChinese) encoding + // old aliases Resource_FormatType_ANSI = Resource_FormatType_NoConversion, Resource_SJIS = Resource_FormatType_SJIS, diff --git a/src/Resource/Resource_Unicode.cxx b/src/Resource/Resource_Unicode.cxx index ab24ce22ee..03761b8c10 100644 --- a/src/Resource/Resource_Unicode.cxx +++ b/src/Resource/Resource_Unicode.cxx @@ -652,6 +652,16 @@ void Resource_Unicode::ConvertFormatToUnicode (const Resource_FormatType theForm } break; } + case Resource_FormatType_Big5: + { + ConvertBig5ToUnicode(theFromStr, theToStr); + break; + } + case Resource_FormatType_GBK: + { + ConvertGBKToUnicode(theFromStr, theToStr); + break; + } case Resource_FormatType_UTF8: { theToStr = TCollection_ExtendedString (theFromStr, Standard_True); @@ -760,6 +770,11 @@ Standard_Boolean Resource_Unicode::ConvertUnicodeToFormat(const Resource_FormatT const NCollection_Utf16String aString (theFromStr.ToExtString()); return aString.ToLocale (theToStr, theMaxSize); } + case Resource_FormatType_GBK: + case Resource_FormatType_Big5: + { + throw Standard_NotImplemented("Resource_Unicode::ConvertUnicodeToFormat - convert from GBK and Big5 to Unocode is not implemented"); + } } return Standard_False; }