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.kaganski@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 0000000..ef75274
--- /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 3a506d4..4ae1133 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 e4d2143..5a0cf29 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);