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);