sw/qa/extras/txtimport/data/GB18030.txt |    1 +
 sw/qa/extras/txtimport/txtimport.cxx    |   13 +++++++++++++
 sw/source/filter/basflt/iodetect.cxx    |    4 ++++
 3 files changed, 18 insertions(+)

New commits:
commit 763c2a436baa1814d2bf95477b9d79fa3934d5e5
Author:     dtm <dan...@fearnley.net>
AuthorDate: Thu Dec 23 02:30:14 2021 +0000
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Thu Dec 23 07:22:58 2021 +0100

    tdf#92161 add GB18030 encoding to iodetect
    
    Change-Id: I0f1201cb9cba13f70cb3430772612aa00fcc4b58
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127347
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/sw/qa/extras/txtimport/data/GB18030.txt 
b/sw/qa/extras/txtimport/data/GB18030.txt
new file mode 100644
index 000000000000..ef75274e28a4
--- /dev/null
+++ b/sw/qa/extras/txtimport/data/GB18030.txt
@@ -0,0 +1 @@
+�������֮����ʮ�����ǧ�����ΪһԪ��
diff --git a/sw/qa/extras/txtimport/txtimport.cxx 
b/sw/qa/extras/txtimport/txtimport.cxx
index 3a506d42227f..4ae113320a88 100644
--- a/sw/qa/extras/txtimport/txtimport.cxx
+++ b/sw/qa/extras/txtimport/txtimport.cxx
@@ -129,6 +129,19 @@ CPPUNIT_TEST_FIXTURE(TxtImportTest, 
testTdf60145_utf16lewithbom)
     CPPUNIT_ASSERT_EQUAL(OUString(u"漢a'"), xPara->getString());
 }
 
+CPPUNIT_TEST_FIXTURE(TxtImportTest, testTdf92161_gb18030)
+{
+    load(mpTestDocumentPath, "GB18030.txt");
+    SwXTextDocument* pTextDoc = 
dynamic_cast<SwXTextDocument*>(mxComponent.get());
+    CPPUNIT_ASSERT(pTextDoc);
+    SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc();
+    CPPUNIT_ASSERT(pDoc);
+
+    uno::Reference<text::XTextRange> xPara(getParagraph(1));
+
+    CPPUNIT_ASSERT_EQUAL(OUString(u"盖闻天地之数,有十二万九千六百岁为一元。"), 
xPara->getString());
+}
+
 CPPUNIT_TEST_FIXTURE(TxtImportTest, testTdf60145_utf16bewithoutbom)
 {
     load(mpTestDocumentPath, "UTF16BEWITHOUTBOM.txt");
diff --git a/sw/source/filter/basflt/iodetect.cxx 
b/sw/source/filter/basflt/iodetect.cxx
index e4d214391f2c..5a0cf291e97b 100644
--- a/sw/source/filter/basflt/iodetect.cxx
+++ b/sw/source/filter/basflt/iodetect.cxx
@@ -295,6 +295,10 @@ bool SwIoSystem::IsDetectableText(const char* pBuf, 
sal_uLong &rLen,
             {
                 eCharSet = RTL_TEXTENCODING_UCS2; // UTF-16LE
             }
+            else if (U_SUCCESS(uerr) && !strcmp("GB18030", pEncodingName))
+            {
+                eCharSet = RTL_TEXTENCODING_GB_18030;
+            }
         }
 
         ucsdet_close(ucd);

Reply via email to