basctl/source/basicide/baside2.cxx | 4 basctl/source/basicide/baside2b.cxx | 4 basic/source/basmgr/basmgr.cxx | 10 - dbaccess/source/ui/tabledesign/TableRow.cxx | 16 +- editeng/source/editeng/impedit4.cxx | 6 editeng/source/items/legacyitem.cxx | 8 - editeng/source/items/numitem.cxx | 6 include/sfx2/objsh.hxx | 1 include/tools/stream.hxx | 57 ++++----- sc/qa/unit/screenshots/screenshots.cxx | 2 sc/source/core/data/documen8.cxx | 2 sc/source/core/tool/ddelink.cxx | 4 sc/source/filter/dif/difexp.cxx | 6 sc/source/filter/dif/difimp.cxx | 8 - sc/source/filter/qpro/qpro.cxx | 4 sc/source/filter/qpro/qproform.cxx | 4 sc/source/ui/dbgui/asciiopt.cxx | 6 sc/source/ui/dbgui/scuiasciiopt.cxx | 12 - sc/source/ui/docshell/docsh.cxx | 8 - sc/source/ui/docshell/impex.cxx | 22 +-- sc/source/ui/view/cellsh2.cxx | 2 sfx2/source/appl/sfxhelp.cxx | 2 sfx2/source/doc/objstor.cxx | 79 ------------ svl/source/items/macitem.cxx | 2 svl/source/items/stringio.cxx | 4 svtools/source/misc/templatefoldercache.cxx | 8 - svx/source/svdraw/svdotxln.cxx | 2 sw/inc/iodetect.hxx | 2 sw/source/core/edit/edtox.cxx | 3 sw/source/filter/ascii/wrtasc.cxx | 6 sw/source/filter/basflt/iodetect.cxx | 96 +-------------- sw/source/filter/md/swmd.cxx | 21 --- sw/source/filter/md/wrtmd.cxx | 2 sw/source/ui/dbui/createaddresslistdialog.cxx | 4 sw/source/ui/dbui/mmresultdialogs.cxx | 2 sw/source/ui/index/cnttab.cxx | 5 sw/source/uibase/dbui/dbmgr.cxx | 2 sw/source/uibase/uiview/srcview.cxx | 12 - tools/Library_tl.mk | 4 tools/source/inet/inetstrm.cxx | 2 tools/source/stream/stream.cxx | 162 +++++++++++++++++++++----- vcl/source/edit/texteng.cxx | 6 vcl/source/filter/svm/SvmConverter.cxx | 2 vcl/source/filter/svm/SvmReader.cxx | 2 vcl/source/filter/svm/SvmWriter.cxx | 4 vcl/source/font/font.cxx | 8 - vcl/source/gdi/TypeSerializer.cxx | 2 vcl/source/gdi/jobset.cxx | 2 48 files changed, 287 insertions(+), 351 deletions(-)
New commits: commit 55b9d8607b9817ec228267d2862ab5c41bf78bf3 Author: Mike Kaganski <[email protected]> AuthorDate: Wed Feb 25 11:42:25 2026 +0500 Commit: Mike Kaganski <[email protected]> CommitDate: Wed Feb 25 10:33:55 2026 +0100 "CharSet" -> "Encoding" in SvStream Use the correct term. E.g., Unicode charset has different encodings like UTF-8 and UTF-16, and we mean encoding here. Change-Id: I65e90b31cda6e39fdb1584b492e6e0b9821865a5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200285 Tested-by: Jenkins Reviewed-by: Mike Kaganski <[email protected]> diff --git a/basctl/source/basicide/baside2.cxx b/basctl/source/basicide/baside2.cxx index 907d05cb0387..fae3c01bbc29 100644 --- a/basctl/source/basicide/baside2.cxx +++ b/basctl/source/basicide/baside2.cxx @@ -444,7 +444,7 @@ void ModulWindow::LoadBasic() // tdf#139196 - import macros using either default or utf-8 text encoding pStream->StartReadingUnicodeText(RTL_TEXTENCODING_UTF8); if (pStream->Tell() == 3) - pStream->SetStreamCharSet(RTL_TEXTENCODING_UTF8); + pStream->SetStreamEncoding(RTL_TEXTENCODING_UTF8); GetEditView()->Read( *pStream ); GetEditEngine()->SetUpdateMode( true ); GetEditorWindow().PaintImmediately(); @@ -487,7 +487,7 @@ void ModulWindow::SaveBasicSource() EnterWait(); AssertValidEditEngine(); // tdf#139196 - export macros using utf-8 including BOM - pStream->SetStreamCharSet(RTL_TEXTENCODING_UTF8); + pStream->SetStreamEncoding(RTL_TEXTENCODING_UTF8); pStream->WriteUChar(0xEF).WriteUChar(0xBB).WriteUChar(0xBF); GetEditEngine()->Write( *pStream ); aMedium.Commit(); diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx index 633aff6c0c4f..cd2252aada11 100644 --- a/basctl/source/basicide/baside2b.cxx +++ b/basctl/source/basicide/baside2b.cxx @@ -127,7 +127,7 @@ std::u16string_view const cSuffixes = u"%&!#@$"; OUString getTextEngineText (ExtTextEngine& rEngine) { SvMemoryStream aMemStream; - aMemStream.SetStreamCharSet( RTL_TEXTENCODING_UTF8 ); + aMemStream.SetStreamEncoding( RTL_TEXTENCODING_UTF8 ); aMemStream.SetLineDelimiter( LINEEND_LF ); rEngine.Write( aMemStream ); std::size_t nSize = aMemStream.Tell(); @@ -142,7 +142,7 @@ void setTextEngineText (ExtTextEngine& rEngine, std::u16string_view aStr) OString aUTF8Str = OUStringToOString( aStr, RTL_TEXTENCODING_UTF8 ); SvMemoryStream aMemStream( const_cast<char *>(aUTF8Str.getStr()), aUTF8Str.getLength(), StreamMode::READ ); - aMemStream.SetStreamCharSet( RTL_TEXTENCODING_UTF8 ); + aMemStream.SetStreamEncoding( RTL_TEXTENCODING_UTF8 ); aMemStream.SetLineDelimiter( LINEEND_LF ); rEngine.Read(aMemStream); } diff --git a/basic/source/basmgr/basmgr.cxx b/basic/source/basmgr/basmgr.cxx index 532d7792676a..f7dd92125b33 100644 --- a/basic/source/basmgr/basmgr.cxx +++ b/basic/source/basmgr/basmgr.cxx @@ -393,15 +393,15 @@ BasicLibInfo* BasicLibInfo::Create( SotStorageStream& rSStream ) pInfo->bDoLoad = bDoLoad; // The name of the lib... - OUString aName = rSStream.ReadUniOrByteString(rSStream.GetStreamCharSet()); + OUString aName = rSStream.ReadUniOrByteString(rSStream.GetStreamEncoding()); pInfo->SetLibName( aName ); // Absolute path... - OUString aStorageName = rSStream.ReadUniOrByteString(rSStream.GetStreamCharSet()); + OUString aStorageName = rSStream.ReadUniOrByteString(rSStream.GetStreamEncoding()); pInfo->SetStorageName( aStorageName ); // Relative path... - OUString aRelStorageName = rSStream.ReadUniOrByteString(rSStream.GetStreamCharSet()); + OUString aRelStorageName = rSStream.ReadUniOrByteString(rSStream.GetStreamEncoding()); pInfo->SetRelStorageName( aRelStorageName ); if ( nVer >= 2 ) @@ -746,7 +746,7 @@ void BasicManager::LoadOldBasicManager( SotStorage& rStorage ) // and it proceeds ... } xManagerStream->Seek( nBasicEndOff+1 ); // +1: 0x00 as separator - OUString aLibs = xManagerStream->ReadUniOrByteString(xManagerStream->GetStreamCharSet()); + OUString aLibs = xManagerStream->ReadUniOrByteString(xManagerStream->GetStreamEncoding()); xManagerStream->SetBufferSize( 0 ); xManagerStream.clear(); // Close stream @@ -905,7 +905,7 @@ bool BasicManager::ImpLoadLibrary( BasicLibInfo* pLibInfo, SotStorage* pCurStora if ( ( nPasswordMarker == PASSWORD_MARKER ) && !xBasicStream->eof() ) { OUString aPassword = xBasicStream->ReadUniOrByteString( - xBasicStream->GetStreamCharSet()); + xBasicStream->GetStreamEncoding()); pLibInfo->SetPassword( aPassword ); } xBasicStream->SetCryptMaskKey(OString()); diff --git a/dbaccess/source/ui/tabledesign/TableRow.cxx b/dbaccess/source/ui/tabledesign/TableRow.cxx index 02976fb59589..9d1f91e4c3b2 100644 --- a/dbaccess/source/ui/tabledesign/TableRow.cxx +++ b/dbaccess/source/ui/tabledesign/TableRow.cxx @@ -92,9 +92,9 @@ namespace dbaui if(pFieldDesc) { _rStr.WriteInt32( 1 ); - _rStr.WriteUniOrByteString(pFieldDesc->GetName(), _rStr.GetStreamCharSet()); - _rStr.WriteUniOrByteString(pFieldDesc->GetDescription(), _rStr.GetStreamCharSet()); - _rStr.WriteUniOrByteString(pFieldDesc->GetHelpText(), _rStr.GetStreamCharSet()); + _rStr.WriteUniOrByteString(pFieldDesc->GetName(), _rStr.GetStreamEncoding()); + _rStr.WriteUniOrByteString(pFieldDesc->GetDescription(), _rStr.GetStreamEncoding()); + _rStr.WriteUniOrByteString(pFieldDesc->GetHelpText(), _rStr.GetStreamEncoding()); double nValue = 0.0; Any aValue = pFieldDesc->GetControlDefault(); if ( aValue >>= nValue ) @@ -105,7 +105,7 @@ namespace dbaui else { _rStr.WriteInt32( 2 ); - _rStr.WriteUniOrByteString(::comphelper::getString(aValue), _rStr.GetStreamCharSet()); + _rStr.WriteUniOrByteString(::comphelper::getString(aValue), _rStr.GetStreamEncoding()); } _rStr.WriteInt32( pFieldDesc->GetType() ); @@ -132,9 +132,9 @@ namespace dbaui return _rStr; OFieldDescription* pFieldDesc = new OFieldDescription(); _rRow.m_pActFieldDescr = pFieldDesc; - pFieldDesc->SetName(_rStr.ReadUniOrByteString(_rStr.GetStreamCharSet())); - pFieldDesc->SetDescription(_rStr.ReadUniOrByteString(_rStr.GetStreamCharSet())); - pFieldDesc->SetHelpText(_rStr.ReadUniOrByteString(_rStr.GetStreamCharSet())); + pFieldDesc->SetName(_rStr.ReadUniOrByteString(_rStr.GetStreamEncoding())); + pFieldDesc->SetDescription(_rStr.ReadUniOrByteString(_rStr.GetStreamEncoding())); + pFieldDesc->SetHelpText(_rStr.ReadUniOrByteString(_rStr.GetStreamEncoding())); _rStr.ReadInt32( nValue ); Any aControlDefault; @@ -148,7 +148,7 @@ namespace dbaui break; } case 2: - aControlDefault <<= _rStr.ReadUniOrByteString(_rStr.GetStreamCharSet()); + aControlDefault <<= _rStr.ReadUniOrByteString(_rStr.GetStreamEncoding()); break; } diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx index fe65d27fe113..8801ecdd0b8f 100644 --- a/editeng/source/editeng/impedit4.cxx +++ b/editeng/source/editeng/impedit4.cxx @@ -128,12 +128,12 @@ EditPaM ImpEditEngine::ReadText( SvStream& rInput, EditSelection aSel ) EditPaM aPaM = aSel.Max(); OUString aTmpStr; - bool bDone = rInput.ReadByteStringLine( aTmpStr, rInput.GetStreamCharSet() ); + bool bDone = rInput.ReadByteStringLine( aTmpStr, rInput.GetStreamEncoding() ); while ( bDone ) { aPaM = ImpInsertText( EditSelection( aPaM, aPaM ), aTmpStr ); aPaM = ImpInsertParaBreak( aPaM ); - bDone = rInput.ReadByteStringLine( aTmpStr, rInput.GetStreamCharSet() ); + bDone = rInput.ReadByteStringLine( aTmpStr, rInput.GetStreamEncoding() ); } return aPaM; } @@ -252,7 +252,7 @@ ErrCode ImpEditEngine::WriteText( SvStream& rOutput, EditSelection aSel ) nEndPos = aSel.Max().GetIndex(); } OUString aTmpStr = EditDoc::GetParaAsString( pNode, nStartPos, nEndPos ); - rOutput.WriteByteStringLine( aTmpStr, rOutput.GetStreamCharSet() ); + rOutput.WriteByteStringLine( aTmpStr, rOutput.GetStreamEncoding() ); } return rOutput.GetError(); diff --git a/editeng/source/items/legacyitem.cxx b/editeng/source/items/legacyitem.cxx index 28d6ba8ecbf2..58442a0dc19d 100644 --- a/editeng/source/items/legacyitem.cxx +++ b/editeng/source/items/legacyitem.cxx @@ -140,7 +140,7 @@ namespace legacy if ( nDoLoad & LOAD_LINK ) { // UNICODE: rStrm >> aRel; - OUString aRel = rStrm.ReadUniOrByteString(rStrm.GetStreamCharSet()); + OUString aRel = rStrm.ReadUniOrByteString(rStrm.GetStreamEncoding()); // TODO/MBA: how can we get a BaseURL here?! OSL_FAIL("No BaseURL!"); @@ -152,7 +152,7 @@ namespace legacy if ( nDoLoad & LOAD_FILTER ) { // UNICODE: rStrm >> maStrFilter; - rItem.SetGraphicFilter(rStrm.ReadUniOrByteString(rStrm.GetStreamCharSet())); + rItem.SetGraphicFilter(rStrm.ReadUniOrByteString(rStrm.GetStreamEncoding())); } rStrm.ReadSChar( nPos ); @@ -189,12 +189,12 @@ namespace legacy // TODO/MBA: how to get a BaseURL?! OUString aRel = INetURLObject::GetRelURL( u"", rItem.GetGraphicLink() ); // UNICODE: rStrm << aRel; - rStrm.WriteUniOrByteString(aRel, rStrm.GetStreamCharSet()); + rStrm.WriteUniOrByteString(aRel, rStrm.GetStreamEncoding()); } if ( !rItem.GetGraphicFilter().isEmpty() ) { // UNICODE: rStrm << rItem.GetGraphicFilter(); - rStrm.WriteUniOrByteString(rItem.GetGraphicFilter(), rStrm.GetStreamCharSet()); + rStrm.WriteUniOrByteString(rItem.GetGraphicFilter(), rStrm.GetStreamEncoding()); } rStrm.WriteSChar( rItem.GetGraphicPos() ); return rStrm; diff --git a/editeng/source/items/numitem.cxx b/editeng/source/items/numitem.cxx index a02cc575fcf5..89b46ccf771b 100644 --- a/editeng/source/items/numitem.cxx +++ b/editeng/source/items/numitem.cxx @@ -223,9 +223,9 @@ SvxNumberFormat::SvxNumberFormat( SvStream &rStream ) rStream.ReadInt16( nCharTextDistance ); - sPrefix = rStream.ReadUniOrByteString( rStream.GetStreamCharSet() ); - sSuffix = rStream.ReadUniOrByteString( rStream.GetStreamCharSet() ); - sCharStyleName = rStream.ReadUniOrByteString( rStream.GetStreamCharSet() ); + sPrefix = rStream.ReadUniOrByteString( rStream.GetStreamEncoding() ); + sSuffix = rStream.ReadUniOrByteString( rStream.GetStreamEncoding() ); + sCharStyleName = rStream.ReadUniOrByteString( rStream.GetStreamEncoding() ); sal_uInt16 hasGraphicBrush = 0; rStream.ReadUInt16( hasGraphicBrush ); diff --git a/include/tools/stream.hxx b/include/tools/stream.hxx index 5616c3604b33..9d00fb91fc23 100644 --- a/include/tools/stream.hxx +++ b/include/tools/stream.hxx @@ -159,7 +159,7 @@ private: ErrCode m_nError; SvStreamCompressFlags m_nCompressMode; LineEnd m_eLineDelimiter; - rtl_TextEncoding m_eStreamCharSet; + rtl_TextEncoding m_eStreamEncoding; // Encryption OString m_aCryptMaskKey;// aCryptMaskKey.getLength != 0 -> Encryption used @@ -214,9 +214,8 @@ public: void SetCryptMaskKey(const OString& rCryptMaskKey); - void SetStreamCharSet( rtl_TextEncoding eCharSet ) - { m_eStreamCharSet = eCharSet; } - rtl_TextEncoding GetStreamCharSet() const { return m_eStreamCharSet; } + void SetStreamEncoding(rtl_TextEncoding eEncoding) { m_eStreamEncoding = eEncoding; } + rtl_TextEncoding GetStreamEncoding() const { return m_eStreamEncoding; } void SetLineDelimiter( LineEnd eLineEnd ) { m_eLineDelimiter = eLineEnd; } @@ -308,26 +307,26 @@ public: @endcode causing endless loops ... */ - bool ReadByteStringLine( OUString& rStr, rtl_TextEncoding eSrcCharSet, + bool ReadByteStringLine( OUString& rStr, rtl_TextEncoding eSrcEncoding, sal_Int32 nMaxBytesToRead = 0xFFFE ); - bool WriteByteStringLine( std::u16string_view rStr, rtl_TextEncoding eDestCharSet ); + bool WriteByteStringLine( std::u16string_view rStr, rtl_TextEncoding eDestEncoding ); /// Switch to no endian swapping and write 0xfeff void StartWritingUnicodeText(); - /** If eReadBomCharSet==RTL_TEXTENCODING_DONTKNOW: read 16bit, if 0xfeff do + /** If eReadBomEncoding==RTL_TEXTENCODING_DONTKNOW: read 16bit, if 0xfeff do nothing (UTF-16), if 0xfffe switch endian swapping (UTF-16), if 0xefbb or 0xbbef read another byte and check for UTF-8. If no UTF-* BOM was detected put all read bytes back. This means that if 2 bytes were read it was an UTF-16 BOM, if 3 bytes were read it was an UTF-8 BOM. There is no UTF-7, UTF-32 or UTF-EBCDIC BOM detection! - If eReadBomCharSet!=RTL_TEXTENCODING_DONTKNOW: only read a BOM of that + If eReadBomEncoding!=RTL_TEXTENCODING_DONTKNOW: only read a BOM of that encoding and switch endian swapping if UTF-16 and 0xfffe. */ - void StartReadingUnicodeText( rtl_TextEncoding eReadBomCharSet ); + void StartReadingUnicodeText(rtl_TextEncoding eReadBomEncoding); /** Try StartWritingUnicodeText; if failed, use ICU to detect encoding from data. - After the function, the position is after BOM (if any); GetStreamCharSet + After the function, the position is after BOM (if any); GetStreamEncoding returns the detected encoding; GetEndian returns the detected endianness (for UTF-16). */ void DetectEncoding(); @@ -340,16 +339,16 @@ public: */ SAL_DLLPRIVATE bool ReadUniStringLine(OUString& rStr, sal_Int32 nMaxCodepointsToRead); /** Read a 32bit length prefixed sequence of utf-16 if - eSrcCharSet==RTL_TEXTENCODING_UNICODE, otherwise read a 16bit length - prefixed sequence of bytes and convert from eSrcCharSet */ - OUString ReadUniOrByteString(rtl_TextEncoding eSrcCharSet); + eSrcEncoding==RTL_TEXTENCODING_UNICODE, otherwise read a 16bit length + prefixed sequence of bytes and convert from eSrcEncoding */ + OUString ReadUniOrByteString(rtl_TextEncoding eSrcEncoding); /** Write a 32bit length prefixed sequence of utf-16 if - eSrcCharSet==RTL_TEXTENCODING_UNICODE, otherwise convert to eSrcCharSet + eDestEncoding==RTL_TEXTENCODING_UNICODE, otherwise convert to eDestEncoding and write a 16bit length prefixed sequence of bytes */ - SvStream& WriteUniOrByteString( std::u16string_view rStr, rtl_TextEncoding eDestCharSet ); + SvStream& WriteUniOrByteString(std::u16string_view rStr, rtl_TextEncoding eDestEncoding); - /** Read a line of Unicode if eSrcCharSet==RTL_TEXTENCODING_UNICODE, - otherwise read a line of Bytecode and convert from eSrcCharSet + /** Read a line of Unicode if eSrcEncoding==RTL_TEXTENCODING_UNICODE, + otherwise read a line of Bytecode and convert from eSrcEncoding @param nMaxCodepointsToRead Maximum of codepoints (2 bytes if Unicode, bytes if not @@ -363,23 +362,23 @@ public: @endcode causing endless loops ... */ - bool ReadUniOrByteStringLine( OUString& rStr, rtl_TextEncoding eSrcCharSet, + bool ReadUniOrByteStringLine( OUString& rStr, rtl_TextEncoding eSrcEncoding, sal_Int32 nMaxCodepointsToRead = 0xFFFE ); /** Write a sequence of Unicode characters if - eDestCharSet==RTL_TEXTENCODING_UNICODE, otherwise write a sequence of - Bytecodes converted to eDestCharSet. Write trailing zero, if bZero is true. */ - bool WriteUnicodeOrByteText(std::u16string_view rStr, rtl_TextEncoding eDestCharSet, bool bZero = false); + eDestEncoding==RTL_TEXTENCODING_UNICODE, otherwise write a sequence of + Bytecodes converted to eDestEncoding. Write trailing zero, if bZero is true. */ + bool WriteUnicodeOrByteText(std::u16string_view rStr, rtl_TextEncoding eDestEncoding, bool bZero = false); bool WriteUnicodeOrByteText(std::u16string_view rStr) - { return WriteUnicodeOrByteText(rStr, GetStreamCharSet(), /*bZero*/false); } + { return WriteUnicodeOrByteText(rStr, GetStreamEncoding(), /*bZero*/false); } - /** Write a Unicode character if eDestCharSet==RTL_TEXTENCODING_UNICODE, - otherwise write as Bytecode converted to eDestCharSet. + /** Write a Unicode character if eDestEncoding==RTL_TEXTENCODING_UNICODE, + otherwise write as Bytecode converted to eDestEncoding. This may result in more than one byte being written if a multi byte encoding (e.g. UTF7, UTF8) is chosen. */ - bool WriteUniOrByteChar( sal_Unicode ch, rtl_TextEncoding eDestCharSet ); + bool WriteUniOrByteChar( sal_Unicode ch, rtl_TextEncoding eDestEncoding ); bool WriteUniOrByteChar( sal_Unicode ch ) - { return WriteUniOrByteChar( ch, GetStreamCharSet() ); } + { return WriteUniOrByteChar( ch, GetStreamEncoding() ); } void SetBufferSize( sal_uInt16 m_nBufSize ); sal_uInt16 GetBufferSize() const { return m_nBufSize; } @@ -441,7 +440,7 @@ inline SvStream& operator<<( SvStream& rStr, SvStrPtr f ) TOOLS_DLLPUBLIC SvStream& endl( SvStream& rStr ); /// same as endl() but Unicode TOOLS_DLLPUBLIC SvStream& endlu( SvStream& rStr ); -/// call endlu() if m_eStreamCharSet==RTL_TEXTECODING_UNICODE otherwise endl() +/// call endlu() if m_eStreamEncoding==RTL_TEXTECODING_UNICODE otherwise endl() TOOLS_DLLPUBLIC SvStream& endlub( SvStream& rStr ); /// Attempt to read nUnits 8bit units to an OString, returned OString's diff --git a/sc/qa/unit/screenshots/screenshots.cxx b/sc/qa/unit/screenshots/screenshots.cxx index 466dafdf1b09..c6294de2a795 100644 --- a/sc/qa/unit/screenshots/screenshots.cxx +++ b/sc/qa/unit/screenshots/screenshots.cxx @@ -99,7 +99,7 @@ void ScScreenshotTest::initialize() mpFact = ScAbstractDialogFactory::Create(); SvMemoryStream* pNewMemStream = new SvMemoryStream(const_cast<sal_Unicode *>(mCsv.getStr()), mCsv.getLength() * sizeof(sal_Unicode), StreamMode::READ); - pNewMemStream->SetStreamCharSet( RTL_TEXTENCODING_UNICODE ); + pNewMemStream->SetStreamEncoding( RTL_TEXTENCODING_UNICODE ); pNewMemStream->ResetEndianSwap(); mpStream.reset(pNewMemStream); } diff --git a/sc/source/core/data/documen8.cxx b/sc/source/core/data/documen8.cxx index 9d73ed7e7156..b511ea95d661 100644 --- a/sc/source/core/data/documen8.cxx +++ b/sc/source/core/data/documen8.cxx @@ -765,7 +765,7 @@ void ScDocument::LoadDdeLinks(SvStream& rStream) sal_uInt16 nCount(0); rStream.ReadUInt16( nCount ); - const rtl_TextEncoding eCharSet = rStream.GetStreamCharSet(); + const rtl_TextEncoding eCharSet = rStream.GetStreamEncoding(); const size_t nMinStringSize = eCharSet == RTL_TEXTENCODING_UNICODE ? sizeof(sal_uInt32) : sizeof(sal_uInt16); const size_t nMinRecordSize = 1 + nMinStringSize*3; const size_t nMaxRecords = rStream.remainingSize() / nMinRecordSize; diff --git a/sc/source/core/tool/ddelink.cxx b/sc/source/core/tool/ddelink.cxx index 6d9eab0775d0..c398db35f9f7 100644 --- a/sc/source/core/tool/ddelink.cxx +++ b/sc/source/core/tool/ddelink.cxx @@ -83,7 +83,7 @@ ScDdeLink::ScDdeLink( ScDocument& rD, SvStream& rStream, ScMultipleReadHeader& r { rHdr.StartEntry(); - rtl_TextEncoding eCharSet = rStream.GetStreamCharSet(); + rtl_TextEncoding eCharSet = rStream.GetStreamEncoding(); aAppl = rStream.ReadUniOrByteString( eCharSet ); aTopic = rStream.ReadUniOrByteString( eCharSet ); aItem = rStream.ReadUniOrByteString( eCharSet ); @@ -105,7 +105,7 @@ void ScDdeLink::Store( SvStream& rStream, ScMultipleWriteHeader& rHdr ) const { rHdr.StartEntry(); - rtl_TextEncoding eCharSet = rStream.GetStreamCharSet(); + rtl_TextEncoding eCharSet = rStream.GetStreamEncoding(); rStream.WriteUniOrByteString( aAppl, eCharSet ); rStream.WriteUniOrByteString( aTopic, eCharSet ); rStream.WriteUniOrByteString( aItem, eCharSet ); diff --git a/sc/source/filter/dif/difexp.cxx b/sc/source/filter/dif/difexp.cxx index 94f77aef829d..133372e39660 100644 --- a/sc/source/filter/dif/difexp.cxx +++ b/sc/source/filter/dif/difexp.cxx @@ -54,9 +54,9 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, ScDocument& rDoc, OSL_ENSURE( rRange.aStart.Tab() == rRange.aEnd.Tab(), "ScExportDif(): only one table please!" ); - const rtl_TextEncoding eStreamCharSet = rOut.GetStreamCharSet(); + const rtl_TextEncoding eStreamCharSet = rOut.GetStreamEncoding(); if ( eStreamCharSet != eCharSet ) - rOut.SetStreamCharSet( eCharSet ); + rOut.SetStreamEncoding( eCharSet ); sal_Unicode cStrDelim('"'); OString aStrDelimEncoded; // only used if not Unicode @@ -253,7 +253,7 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, ScDocument& rDoc, aOS.setLength(0); // restore original value - rOut.SetStreamCharSet( eStreamCharSet ); + rOut.SetStreamEncoding( eStreamCharSet ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/dif/difimp.cxx b/sc/source/filter/dif/difimp.cxx index 626b76005988..01973a6766d4 100644 --- a/sc/source/filter/dif/difimp.cxx +++ b/sc/source/filter/dif/difimp.cxx @@ -221,10 +221,10 @@ DifParser::DifParser( SvStream& rNewIn, const ScDocument& rDoc, rtl_TextEncoding , pNumFormatter(rDoc.GetFormatTable()) , rIn(rNewIn) { - if ( rIn.GetStreamCharSet() != eCharSet ) + if ( rIn.GetStreamEncoding() != eCharSet ) { OSL_FAIL( "CharSet passed overrides and modifies StreamCharSet" ); - rIn.SetStreamCharSet( eCharSet ); + rIn.SetStreamEncoding( eCharSet ); } rIn.StartReadingUnicodeText( eCharSet ); } @@ -396,7 +396,7 @@ bool DifParser::ReadNextLine( OUString& rStr ) { if( aLookAheadLine.isEmpty() ) { - return rIn.ReadUniOrByteStringLine( rStr, rIn.GetStreamCharSet() ); + return rIn.ReadUniOrByteStringLine( rStr, rIn.GetStreamEncoding() ); } else { @@ -414,7 +414,7 @@ bool DifParser::LookAhead() bool bValidStructure = false; OSL_ENSURE( aLookAheadLine.isEmpty(), "*DifParser::LookAhead(): LookAhead called twice in a row" ); - rIn.ReadUniOrByteStringLine( aLookAheadLine, rIn.GetStreamCharSet() ); + rIn.ReadUniOrByteStringLine( aLookAheadLine, rIn.GetStreamEncoding() ); pCurrentBuffer = aLookAheadLine.getStr(); diff --git a/sc/source/filter/qpro/qpro.cxx b/sc/source/filter/qpro/qpro.cxx index 4097ad1ce57c..b077446a73ce 100644 --- a/sc/source/filter/qpro/qpro.cxx +++ b/sc/source/filter/qpro/qpro.cxx @@ -160,7 +160,7 @@ ScQProReader::ScQProReader(SvStream* pStream) if( mpStream ) { mpStream->SetBufferSize( 65535 ); - mpStream->SetStreamCharSet( RTL_TEXTENCODING_MS_1252 ); + mpStream->SetStreamEncoding( RTL_TEXTENCODING_MS_1252 ); } } @@ -314,7 +314,7 @@ bool ScQProReader::nextRecord() OUString ScQProReader::readString(sal_uInt16 nLength) { - return read_uInt8s_ToOUString(*mpStream, nLength, mpStream->GetStreamCharSet()); + return read_uInt8s_ToOUString(*mpStream, nLength, mpStream->GetStreamEncoding()); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/qpro/qproform.cxx b/sc/source/filter/qpro/qproform.cxx index 91b994d7a032..60050f914dcf 100644 --- a/sc/source/filter/qpro/qproform.cxx +++ b/sc/source/filter/qpro/qproform.cxx @@ -81,7 +81,7 @@ void QProToSc::DoFunc( DefTokenId eOc, sal_uInt16 nArgs, const char* pExtString if( pExtString ) { OString s = OString::Concat("QPRO_") + pExtString; - nPush = aPool.Store(eOc, OStringToOUString(s, maIn.GetStreamCharSet())); + nPush = aPool.Store(eOc, OStringToOUString(s, maIn.GetStreamEncoding())); aPool << nPush; } else @@ -247,7 +247,7 @@ ConvErr QProToSc::Convert( const ScDocument& rDoc, std::unique_ptr<ScTokenArray> } if( nFmla[ i ] == 0x06 ) { - OUString aTmp(::read_zeroTerminated_uInt8s_ToOUString(maIn, maIn.GetStreamCharSet())); + OUString aTmp(::read_zeroTerminated_uInt8s_ToOUString(maIn, maIn.GetStreamEncoding())); sStringArray[ nStringCount ] = aTmp; nStringCount++; SAFEDEC_OR_RET(nRef, aTmp.getLength() + 1, ConvErr::Count); diff --git a/sc/source/ui/dbgui/asciiopt.cxx b/sc/source/ui/dbgui/asciiopt.cxx index 3ef8150cc7a8..39d40d4531a8 100644 --- a/sc/source/ui/dbgui/asciiopt.cxx +++ b/sc/source/ui/dbgui/asciiopt.cxx @@ -125,7 +125,7 @@ void ScAsciiOptions::ReadFromString( std::u16string_view rString, SvStream* pStr if ( bDetectCharSet && pStream4Detect ) { pStream4Detect->DetectEncoding(); - eCharSet = pStream4Detect->GetStreamCharSet(); + eCharSet = pStream4Detect->GetStreamEncoding(); } else if (!bDetectCharSet) eCharSet = ScGlobal::GetCharsetValue( aToken ); diff --git a/sc/source/ui/dbgui/scuiasciiopt.cxx b/sc/source/ui/dbgui/scuiasciiopt.cxx index 20fd26fa7ac6..088509e67146 100644 --- a/sc/source/ui/dbgui/scuiasciiopt.cxx +++ b/sc/source/ui/dbgui/scuiasciiopt.cxx @@ -373,7 +373,7 @@ ScImportAsciiDlg::ScImportAsciiDlg(weld::Window* pParent, std::u16string_view aD // Detect character set only once and then use it for "Detect" option. mpDatStream->DetectEncoding(); - meDetectedCharSet = mpDatStream->GetStreamCharSet(); + meDetectedCharSet = mpDatStream->GetStreamEncoding(); if (meDetectedCharSet == RTL_TEXTENCODING_DONTKNOW) { meDetectedCharSet = osl_getThreadTextEncoding(); @@ -534,7 +534,7 @@ bool ScImportAsciiDlg::GetLine( sal_uLong nLine, OUString &rText, sal_Unicode& r memset( mpRowPosArray.get(), 0, sizeof(mpRowPosArray[0]) * (ASCIIDLG_MAXROWS+2)); Seek(0); - mpDatStream->StartReadingUnicodeText( mpDatStream->GetStreamCharSet() ); + mpDatStream->StartReadingUnicodeText( mpDatStream->GetStreamEncoding() ); mnStreamPos = mpDatStream->Tell(); mpRowPosArray[mnRowPosCount] = mnStreamPos; @@ -773,7 +773,7 @@ void ScImportAsciiDlg::UpdateVertical() { mnRowPosCount = 0; if (mpDatStream) - mpDatStream->SetStreamCharSet(meCharSet); + mpDatStream->SetStreamEncoding(meCharSet); } void ScImportAsciiDlg::RbSepFix() diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx index 3d1050f488a9..b72ef6a16219 100644 --- a/sc/source/ui/docshell/docsh.cxx +++ b/sc/source/ui/docshell/docsh.cxx @@ -1380,7 +1380,7 @@ bool ScDocShell::ConvertFrom( SfxMedium& rMedium ) SvStream* pInStream = rMedium.GetInStream(); if (pInStream) { - pInStream->SetStreamCharSet( aOptions.GetCharSet() ); + pInStream->SetStreamEncoding( aOptions.GetCharSet() ); pInStream->Seek( 0 ); bRet = aImpEx.ImportStream( *pInStream, rMedium.GetBaseURL(), SotClipboardFormatId::STRING ); eError = bRet ? ERRCODE_NONE : SCERR_IMPORT_CONNECT; @@ -2025,8 +2025,8 @@ void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt, bool bShowFormulas = rAsciiOpt.bSaveFormulas; bool bIncludeBOM = rAsciiOpt.bIncludeBOM; - rtl_TextEncoding eOldCharSet = rStream.GetStreamCharSet(); - rStream.SetStreamCharSet( eCharSet ); + rtl_TextEncoding eOldCharSet = rStream.GetStreamEncoding(); + rStream.SetStreamEncoding( eCharSet ); SvStreamEndian nOldNumberFormatInt = rStream.GetEndian(); OString aStrDelimEncoded; // only used if not Unicode OUString aStrDelimDecoded; // only used if context encoding @@ -2430,7 +2430,7 @@ void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt, endlub( rStream ); } - rStream.SetStreamCharSet( eOldCharSet ); + rStream.SetStreamEncoding( eOldCharSet ); rStream.SetEndian( nOldNumberFormatInt ); } diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx index 8780fe6ccf41..63475eef4e09 100644 --- a/sc/source/ui/docshell/impex.cxx +++ b/sc/source/ui/docshell/impex.cxx @@ -285,7 +285,7 @@ bool ScImportExport::ExportData( std::u16string_view rMimeType, SvMemoryStream aStrm; SotClipboardFormatId fmtId = SotExchange::GetFormatIdFromMimeType(rMimeType); if (fmtId == SotClipboardFormatId::STRING) - aStrm.SetStreamCharSet(RTL_TEXTENCODING_UNICODE); + aStrm.SetStreamEncoding(RTL_TEXTENCODING_UNICODE); // mba: no BaseURL for data exchange if (ExportStream(aStrm, OUString(), fmtId)) { @@ -323,7 +323,7 @@ bool ScImportExport::ImportString( const OUString& rText, SotClipboardFormatId n rtl_TextEncoding eEnc = osl_getThreadTextEncoding(); OString aTmp( rText.getStr(), rText.getLength(), eEnc ); SvMemoryStream aStrm( const_cast<char *>(aTmp.getStr()), aTmp.getLength() * sizeof(char), StreamMode::READ ); - aStrm.SetStreamCharSet( eEnc ); + aStrm.SetStreamEncoding( eEnc ); aStrm.ResetEndianSwap(); //! no swapping in memory return ImportStream( aStrm, OUString(), nFmt ); } @@ -344,7 +344,7 @@ bool ScImportExport::ExportString( OUString& rText, SotClipboardFormatId nFmt ) // nSizeLimit not needed for OUString SvMemoryStream aStrm; - aStrm.SetStreamCharSet( RTL_TEXTENCODING_UNICODE ); + aStrm.SetStreamEncoding( RTL_TEXTENCODING_UNICODE ); aStrm.ResetEndianSwap(); //! no swapping in memory // mba: no BaseURL for data exc if( ExportStream( aStrm, OUString(), nFmt ) ) @@ -369,7 +369,7 @@ bool ScImportExport::ExportByteString( OString& rText, rtl_TextEncoding eEnc, So nSizeLimit = SAL_MAX_UINT16; SvMemoryStream aStrm; - aStrm.SetStreamCharSet( eEnc ); + aStrm.SetStreamEncoding( eEnc ); aStrm.ResetEndianSwap(); //! no swapping in memory // mba: no BaseURL for data exchange if( ExportStream( aStrm, OUString(), nFmt ) ) @@ -910,7 +910,7 @@ bool ScImportExport::Text2Doc( SvStream& rStrm ) SCCOL nEndCol = aRange.aEnd.Col(); SCROW nEndRow = aRange.aEnd.Row(); sal_uInt64 nOldPos = rStrm.Tell(); - rStrm.StartReadingUnicodeText( rStrm.GetStreamCharSet() ); + rStrm.StartReadingUnicodeText( rStrm.GetStreamEncoding() ); bool bData = !bSingle; if( !bSingle) bOk = StartPaste(); @@ -923,7 +923,7 @@ bool ScImportExport::Text2Doc( SvStream& rStrm ) rStrm.Seek( nOldPos ); for( ;; ) { - rStrm.ReadUniOrByteStringLine( aLine, rStrm.GetStreamCharSet(), nArbitraryLineLengthLimit ); + rStrm.ReadUniOrByteStringLine( aLine, rStrm.GetStreamEncoding(), nArbitraryLineLengthLimit ); // tdf#125440 When inserting tab separated string, consider quotes as field markers DoubledQuoteMode mode = aLine.indexOf(" ") >= 0 ? DoubledQuoteMode::ESCAPE : DoubledQuoteMode::KEEP_ALL; if( rStrm.eof() ) @@ -1504,7 +1504,7 @@ bool ScImportExport::ExtText2Doc( SvStream& rStrm ) sal_uInt64 const nRemaining = rStrm.remainingSize(); std::unique_ptr<ScProgress> xProgress( new ScProgress( pDocSh, ScResId( STR_LOAD_DOC ), nRemaining, true )); - rStrm.StartReadingUnicodeText( rStrm.GetStreamCharSet() ); + rStrm.StartReadingUnicodeText( rStrm.GetStreamEncoding() ); // tdf#82254 - check whether to include a byte-order-mark in the output if (nOldPos != rStrm.Tell()) mbIncludeBOM = true; @@ -2062,7 +2062,7 @@ bool ScImportExport::Sylk2Doc( SvStream& rStrm ) { //! allow unicode (void)rStrm.ReadLine( aByteLine ); - aLine = OStringToOUString(aByteLine, rStrm.GetStreamCharSet()); + aLine = OStringToOUString(aByteLine, rStrm.GetStreamEncoding()); if( rStrm.eof() ) break; bool bInvalidCol = false; @@ -2688,7 +2688,7 @@ ScImportStringStream::ScImportStringStream( const OUString& rStr ) : SvMemoryStream( const_cast<sal_Unicode *>(rStr.getStr()), rStr.getLength() * sizeof(sal_Unicode), StreamMode::READ) { - SetStreamCharSet( RTL_TEXTENCODING_UNICODE ); + SetStreamEncoding( RTL_TEXTENCODING_UNICODE ); ResetEndianSwap(); } @@ -2714,7 +2714,7 @@ Label_RetryWithNewSep: } OUString aStr; - rStream.ReadUniOrByteStringLine(aStr, rStream.GetStreamCharSet(), nArbitraryLineLengthLimit); + rStream.ReadUniOrByteStringLine(aStr, rStream.GetStreamEncoding(), nArbitraryLineLengthLimit); if (bEmbeddedLineBreak) { @@ -2832,7 +2832,7 @@ Label_RetryWithNewSep: { nLastOffset = aStr.getLength(); OUString aNext; - rStream.ReadUniOrByteStringLine(aNext, rStream.GetStreamCharSet(), nArbitraryLineLengthLimit); + rStream.ReadUniOrByteStringLine(aNext, rStream.GetStreamEncoding(), nArbitraryLineLengthLimit); if (!rStream.eof()) aStr += " " + aNext; } diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx index 6bb34d55b74d..167415404a0f 100644 --- a/sc/source/ui/view/cellsh2.cxx +++ b/sc/source/ui/view/cellsh2.cxx @@ -1127,7 +1127,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) aExport.SetDelimiter( u' SvMemoryStream aStream; - aStream.SetStreamCharSet( RTL_TEXTENCODING_UNICODE ); + aStream.SetStreamEncoding( RTL_TEXTENCODING_UNICODE ); aStream.ResetEndianSwap(); aExport.ExportStream( aStream, OUString(), SotClipboardFormatId::STRING ); diff --git a/sfx2/source/appl/sfxhelp.cxx b/sfx2/source/appl/sfxhelp.cxx index b24b3c0320d2..1033468a7ac7 100644 --- a/sfx2/source/appl/sfxhelp.cxx +++ b/sfx2/source/appl/sfxhelp.cxx @@ -897,7 +897,7 @@ static bool impl_showOfflineHelp(const OUString& rURL, weld::Widget* pDialogPare ::utl::TempFileNamed aTempFile(u"NewHelp", true, aExtension, parent, false ); SvStream* pStream = aTempFile.GetStream(StreamMode::WRITE); - pStream->SetStreamCharSet(RTL_TEXTENCODING_UTF8); + pStream->SetStreamEncoding(RTL_TEXTENCODING_UTF8); OUString aTempStr = SHTML1 + SHTML2 + aBaseInstallPath + "/" + HelpLocaleString() + SHTML3 + diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx index 70ddb66ead03..d8e0eae2206e 100644 --- a/sfx2/source/doc/objstor.cxx +++ b/sfx2/source/doc/objstor.cxx @@ -1051,7 +1051,7 @@ void SfxObjectShell::DetectCsvFilterOptions(SvStream& stream, OUString& aFilterO if (aCharSet == aDetect) { stream.DetectEncoding(); - eCharSet = stream.GetStreamCharSet(); + eCharSet = stream.GetStreamEncoding(); } else if (!aCharSet.empty()) eCharSet = o3tl::toInt32(aCharSet); diff --git a/svl/source/items/macitem.cxx b/svl/source/items/macitem.cxx index bd3dfccffcb8..1a538e164a25 100644 --- a/svl/source/items/macitem.cxx +++ b/svl/source/items/macitem.cxx @@ -97,7 +97,7 @@ void SvxMacroTableDtor::Read( SvStream& rStrm ) auto nMacro = o3tl::make_unsigned(nReadMacro); - const size_t nMinStringSize = rStrm.GetStreamCharSet() == RTL_TEXTENCODING_UNICODE ? 4 : 2; + const size_t nMinStringSize = rStrm.GetStreamEncoding() == RTL_TEXTENCODING_UNICODE ? 4 : 2; size_t nMinRecordSize = 2 + 2*nMinStringSize; if( SVX_MACROTBL_VERSION40 <= nVersion ) nMinRecordSize+=2; diff --git a/svl/source/items/stringio.cxx b/svl/source/items/stringio.cxx index 5345e165aa34..f408ec00ef63 100644 --- a/svl/source/items/stringio.cxx +++ b/svl/source/items/stringio.cxx @@ -23,12 +23,12 @@ OUString readByteString(SvStream& rStream) { - return rStream.ReadUniOrByteString(rStream.GetStreamCharSet()); + return rStream.ReadUniOrByteString(rStream.GetStreamEncoding()); } void writeByteString(SvStream& rStream, std::u16string_view rString) { - rStream.WriteUniOrByteString(rString, rStream.GetStreamCharSet()); + rStream.WriteUniOrByteString(rString, rStream.GetStreamEncoding()); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/source/misc/templatefoldercache.cxx b/svtools/source/misc/templatefoldercache.cxx index 1b5d2c661cc1..97b01d45852e 100644 --- a/svtools/source/misc/templatefoldercache.cxx +++ b/svtools/source/misc/templatefoldercache.cxx @@ -278,7 +278,7 @@ namespace svt // #116281# Keep office installation relocatable. Never store // any direct references to office installation directory. sURL = m_xOfficeInstDirs->makeRelocatableURL( sURL ); - m_rStorage.WriteUniOrByteString( sURL, m_rStorage.GetStreamCharSet() ); + m_rStorage.WriteUniOrByteString( sURL, m_rStorage.GetStreamEncoding() ); } }; @@ -356,7 +356,7 @@ namespace svt // initialize them with their (local) names while ( nChildren-- ) { - OUString sURL = m_rStorage.ReadUniOrByteString(m_rStorage.GetStreamCharSet()); + OUString sURL = m_rStorage.ReadUniOrByteString(m_rStorage.GetStreamEncoding()); sURL = m_xOfficeInstDirs->makeAbsoluteURL( sURL ); rChildren.push_back( new TemplateContent( INetURLObject( sURL ) ) ); } @@ -671,7 +671,7 @@ namespace svt m_aPreviousState.reserve( nRootDirectories ); while ( nRootDirectories-- ) { - OUString sURL = m_pCacheStream->ReadUniOrByteString(m_pCacheStream->GetStreamCharSet()); + OUString sURL = m_pCacheStream->ReadUniOrByteString(m_pCacheStream->GetStreamEncoding()); // #116281# Keep office installation relocatable. Never store // any direct references to office installation directory. sURL = getOfficeInstDirs()->makeAbsoluteURL( sURL ); @@ -722,7 +722,7 @@ namespace svt } if ( m_pCacheStream ) - m_pCacheStream->SetStreamCharSet( RTL_TEXTENCODING_UTF8 ); + m_pCacheStream->SetStreamEncoding( RTL_TEXTENCODING_UTF8 ); return nullptr != m_pCacheStream; } diff --git a/svx/source/svdraw/svdotxln.cxx b/svx/source/svdraw/svdotxln.cxx index 6b07cf15552e..c8596a4e9544 100644 --- a/svx/source/svdraw/svdotxln.cxx +++ b/svx/source/svdraw/svdotxln.cxx @@ -217,7 +217,7 @@ bool SdrTextObj::LoadText(const OUString& rFileName, rtl_TextEncoding eCharSet) if( pIStm ) { - pIStm->SetStreamCharSet(GetSOLoadTextEncoding(eCharSet)); + pIStm->SetStreamEncoding(GetSOLoadTextEncoding(eCharSet)); char cRTF[5]; cRTF[4] = 0; diff --git a/sw/source/core/edit/edtox.cxx b/sw/source/core/edit/edtox.cxx index 437b5f41e182..46aef659f063 100644 --- a/sw/source/core/edit/edtox.cxx +++ b/sw/source/core/edit/edtox.cxx @@ -297,7 +297,7 @@ void SwEditShell::ApplyAutoMark() Push(); // tdf#106899 - import tox concordance file using the appropriate character set rStrm.DetectEncoding(); - rtl_TextEncoding eChrSet = rStrm.GetStreamCharSet(); + rtl_TextEncoding eChrSet = rStrm.GetStreamEncoding(); if (eChrSet == RTL_TEXTENCODING_DONTKNOW) eChrSet = ::osl_getThreadTextEncoding(); diff --git a/sw/source/filter/ascii/wrtasc.cxx b/sw/source/filter/ascii/wrtasc.cxx index 9570dda31e2b..48a42d21cee6 100644 --- a/sw/source/filter/ascii/wrtasc.cxx +++ b/sw/source/filter/ascii/wrtasc.cxx @@ -121,8 +121,8 @@ ErrCode SwASCWriter::WriteStream() (RTL_TEXTENCODING_UCS2 == GetAsciiOptions().GetCharSet() || RTL_TEXTENCODING_UTF8 == GetAsciiOptions().GetCharSet()); - rtl_TextEncoding eOld = Strm().GetStreamCharSet(); - Strm().SetStreamCharSet( GetAsciiOptions().GetCharSet() ); + rtl_TextEncoding eOld = Strm().GetStreamEncoding(); + Strm().SetStreamEncoding( GetAsciiOptions().GetCharSet() ); // Output all areas of the pam into the ASC file do { @@ -205,7 +205,7 @@ ErrCode SwASCWriter::WriteStream() } } while( CopyNextPam( &pPam ) ); // Until all pams are processed - Strm().SetStreamCharSet( eOld ); + Strm().SetStreamEncoding( eOld ); if( m_bShowProgress ) ::EndProgress( m_pDoc->GetDocShell() ); diff --git a/sw/source/filter/basflt/iodetect.cxx b/sw/source/filter/basflt/iodetect.cxx index e1a6312f2dd0..d136dd2ea070 100644 --- a/sw/source/filter/basflt/iodetect.cxx +++ b/sw/source/filter/basflt/iodetect.cxx @@ -245,7 +245,7 @@ bool SwIoSystem::IsDetectableText(const char* pBuf, sal_uLong &rLen, { SvMemoryStream aStream(const_cast<char*>(pBuf), rLen, StreamMode::READ); aStream.DetectEncoding(); - rtl_TextEncoding eCharSet = aStream.GetStreamCharSet(); + rtl_TextEncoding eCharSet = aStream.GetStreamEncoding(); auto nBomSize = aStream.Tell(); pBuf += nBomSize; rLen -= nBomSize; diff --git a/sw/source/filter/md/swmd.cxx b/sw/source/filter/md/swmd.cxx index c421ee372a01..ae6bd7757e8d 100644 --- a/sw/source/filter/md/swmd.cxx +++ b/sw/source/filter/md/swmd.cxx @@ -843,7 +843,7 @@ ErrCode SwMarkdownParser::CallParser() { // use utf8 m_rInput.DetectEncoding(); - const rtl_TextEncoding eSrcEnc = m_rInput.GetStreamCharSet(); + const rtl_TextEncoding eSrcEnc = m_rInput.GetStreamEncoding(); if (eSrcEnc == RTL_TEXTENCODING_DONTKNOW) { return ERRCODE_IO_INVALIDCHAR; diff --git a/sw/source/filter/md/wrtmd.cxx b/sw/source/filter/md/wrtmd.cxx index bc471e11a2a7..4b84e85abae0 100644 --- a/sw/source/filter/md/wrtmd.cxx +++ b/sw/source/filter/md/wrtmd.cxx @@ -1019,7 +1019,7 @@ ErrCode SwMDWriter::WriteStream() { CollectFlys(); - Strm().SetStreamCharSet(RTL_TEXTENCODING_UTF8); + Strm().SetStreamEncoding(RTL_TEXTENCODING_UTF8); if (m_bShowProgress) ::StartProgress(STR_STATSTR_W4WWRITE, 0, sal_Int32(m_pDoc->GetNodes().Count()), m_pDoc->GetDocShell()); diff --git a/sw/source/ui/dbui/createaddresslistdialog.cxx b/sw/source/ui/dbui/createaddresslistdialog.cxx index 9c3e3bfa5842..93a0ee900e9c 100644 --- a/sw/source/ui/dbui/createaddresslistdialog.cxx +++ b/sw/source/ui/dbui/createaddresslistdialog.cxx @@ -259,7 +259,7 @@ SwCreateAddressListDialog::SwCreateAddressListDialog( if(pStream) { pStream->SetLineDelimiter( LINEEND_LF ); - pStream->SetStreamCharSet(RTL_TEXTENCODING_UTF8); + pStream->SetStreamEncoding(RTL_TEXTENCODING_UTF8); OUString sLine; bool bRead = pStream->ReadByteStringLine( sLine, RTL_TEXTENCODING_UTF8 ); @@ -445,7 +445,7 @@ IMPL_LINK_NOARG(SwCreateAddressListDialog, OkHdl_Impl, weld::Button&, void) SfxMedium aMedium( m_sURL, StreamMode::READWRITE|StreamMode::TRUNC ); SvStream* pStream = aMedium.GetOutStream(); pStream->SetLineDelimiter( LINEEND_LF ); - pStream->SetStreamCharSet(RTL_TEXTENCODING_UTF8); + pStream->SetStreamEncoding(RTL_TEXTENCODING_UTF8); lcl_WriteValues(&(m_pCSVData->aDBColumnHeaders), pStream); diff --git a/sw/source/ui/dbui/mmresultdialogs.cxx b/sw/source/ui/dbui/mmresultdialogs.cxx index 796e251e46ba..827924702aa9 100644 --- a/sw/source/ui/dbui/mmresultdialogs.cxx +++ b/sw/source/ui/dbui/mmresultdialogs.cxx @@ -1209,7 +1209,7 @@ IMPL_LINK_NOARG(SwMMResultEmailDialog, SendDocumentsHdl_Impl, weld::Button&, voi SfxMedium aMedium( aName.GetValue(), StreamMode::READ); SvStream* pInStream = aMedium.GetInStream(); if(pInStream) - pInStream->SetStreamCharSet( eEncoding ); + pInStream->SetStreamEncoding( eEncoding ); else { OSL_FAIL("no output file created?"); diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx index 58fddcba88c3..09d75252b718 100644 --- a/sw/source/ui/index/cnttab.cxx +++ b/sw/source/ui/index/cnttab.cxx @@ -4007,7 +4007,7 @@ void SwEntryBrowseBox::ReadEntries(SvStream& rInStr) AutoMarkEntry* pToInsert = nullptr; // tdf#108910, tdf#125496 - read index entries using the appropriate character set rInStr.DetectEncoding(); - rtl_TextEncoding eTEnc = rInStr.GetStreamCharSet(); + rtl_TextEncoding eTEnc = rInStr.GetStreamEncoding(); if (eTEnc == RTL_TEXTENCODING_DONTKNOW) eTEnc = osl_getThreadTextEncoding(); while (rInStr.good()) @@ -4157,7 +4157,7 @@ IMPL_LINK_NOARG(SwAutoMarkDlg_Impl, OkHdl, weld::Button&, void) : StreamMode::WRITE| StreamMode::TRUNC ); SvStream* pStrm = aMed.GetOutStream(); // tdf#108910, tdf#125496 - write index entries using the utf8 text encoding - pStrm->SetStreamCharSet( RTL_TEXTENCODING_UTF8 ); + pStrm->SetStreamEncoding( RTL_TEXTENCODING_UTF8 ); if( !pStrm->GetError() ) { m_xEntriesBB->WriteEntries( *pStrm ); diff --git a/sw/source/uibase/dbui/dbmgr.cxx b/sw/source/uibase/dbui/dbmgr.cxx index 26fa1b3bd0c1..0ece02476fa8 100644 --- a/sw/source/uibase/dbui/dbmgr.cxx +++ b/sw/source/uibase/dbui/dbmgr.cxx @@ -1000,7 +1000,7 @@ static rtl::Reference<SwMailMessage> lcl_CreateMailFromDoc( if( !pInStream ) return pMessage; - pInStream->SetStreamCharSet( sMailEncoding ); + pInStream->SetStreamEncoding( sMailEncoding ); OStringBuffer sLine; while ( pInStream->ReadLine( sLine ) ) { diff --git a/sw/source/uibase/uiview/srcview.cxx b/sw/source/uibase/uiview/srcview.cxx index be54760a804b..345f2a116a7a 100644 --- a/sw/source/uibase/uiview/srcview.cxx +++ b/sw/source/uibase/uiview/srcview.cxx @@ -225,7 +225,7 @@ SwSrcView::~SwSrcView() void SwSrcView::SaveContentTo(SfxMedium& rMed) { SvStream* pOutStream = rMed.GetOutStream(); - pOutStream->SetStreamCharSet(lcl_GetStreamCharSet(m_eLoadEncoding)); + pOutStream->SetStreamEncoding(lcl_GetStreamCharSet(m_eLoadEncoding)); m_aEditWin->Write( *pOutStream ); } @@ -257,7 +257,7 @@ void SwSrcView::SaveContent(const OUString& rTmpFile) { SfxMedium aMedium( rTmpFile, StreamMode::WRITE); SvStream* pOutStream = aMedium.GetOutStream(); - pOutStream->SetStreamCharSet( lcl_GetStreamCharSet(m_eLoadEncoding) ); + pOutStream->SetStreamEncoding( lcl_GetStreamCharSet(m_eLoadEncoding) ); m_aEditWin->Write(*pOutStream); aMedium.Commit(); } @@ -301,7 +301,7 @@ void SwSrcView::Execute(SfxRequest& rReq) SfxMedium aMedium( xFP->getSelectedFiles().getConstArray()[0], StreamMode::WRITE | StreamMode::SHARE_DENYNONE ); SvStream* pOutStream = aMedium.GetOutStream(); - pOutStream->SetStreamCharSet(lcl_GetStreamCharSet(m_eLoadEncoding)); + pOutStream->SetStreamEncoding(lcl_GetStreamCharSet(m_eLoadEncoding)); m_aEditWin->Write( *pOutStream ); aMedium.Commit(); } @@ -326,7 +326,7 @@ void SwSrcView::Execute(SfxRequest& rReq) SvStream* pOutStream = pMed->GetOutStream(); pOutStream->Seek(0); pOutStream->SetStreamSize(0); - pOutStream->SetStreamCharSet(lcl_GetStreamCharSet(m_eLoadEncoding)); + pOutStream->SetStreamEncoding(lcl_GetStreamCharSet(m_eLoadEncoding)); m_aEditWin->Write( *pOutStream ); pMed->CloseOutStream(); pMed->Commit(); @@ -783,7 +783,7 @@ void SwSrcView::Load(SwDocShell* pDocShell) eDestEnc = eHeaderEnc; m_aEditWin->SetTextEncoding(eDestEnc); } - pStream->SetStreamCharSet( eDestEnc ); + pStream->SetStreamEncoding( eDestEnc ); pStream->Seek(0); TextEngine* pTextEngine = m_aEditWin->GetTextEngine(); pTextEngine->EnableUndo(false); @@ -821,7 +821,7 @@ void SwSrcView::Load(SwDocShell* pDocShell) aMedium.Commit(); SvStream* pInStream = aMedium.GetInStream(); pInStream->Seek(0); - pInStream->SetStreamCharSet( eDestEnc ); + pInStream->SetStreamEncoding( eDestEnc ); m_aEditWin->Read(*pInStream); } diff --git a/tools/source/inet/inetstrm.cxx b/tools/source/inet/inetstrm.cxx index 2feaad7f1167..4166b4314b2c 100644 --- a/tools/source/inet/inetstrm.cxx +++ b/tools/source/inet/inetstrm.cxx @@ -233,7 +233,7 @@ INetMIMEMessageStream::INetMIMEMessageStream( nChildIndex(0) { assert(pMsg != nullptr); - maMsgBuffer.SetStreamCharSet(RTL_TEXTENCODING_ASCII_US); + maMsgBuffer.SetStreamEncoding(RTL_TEXTENCODING_ASCII_US); pRead = pWrite = mvBuffer.data(); } diff --git a/tools/source/stream/stream.cxx b/tools/source/stream/stream.cxx index 40f2c8461244..77d06abfe0fd 100644 --- a/tools/source/stream/stream.cxx +++ b/tools/source/stream/stream.cxx @@ -283,7 +283,7 @@ SvStream::SvStream() : #else , m_eLineDelimiter(LINEEND_CRLF) // DOS-Format #endif - , m_eStreamCharSet(osl_getThreadTextEncoding()) + , m_eStreamEncoding(osl_getThreadTextEncoding()) , m_nCryptMask(0) @@ -384,12 +384,12 @@ void SvStream::ResetError() ClearError(); } -bool SvStream::ReadByteStringLine( OUString& rStr, rtl_TextEncoding eSrcCharSet, +bool SvStream::ReadByteStringLine( OUString& rStr, rtl_TextEncoding eSrcEncoding, sal_Int32 nMaxBytesToRead ) { OStringBuffer aStr; bool bRet = ReadLine( aStr, nMaxBytesToRead); - rStr = OStringToOUString(aStr, eSrcCharSet); + rStr = OStringToOUString(aStr, eSrcEncoding); return bRet; } @@ -560,13 +560,13 @@ bool SvStream::ReadUniStringLine( OUString& rStr, sal_Int32 nMaxCodepointsToRead return bEnd; } -bool SvStream::ReadUniOrByteStringLine( OUString& rStr, rtl_TextEncoding eSrcCharSet, +bool SvStream::ReadUniOrByteStringLine( OUString& rStr, rtl_TextEncoding eSrcEncoding, sal_Int32 nMaxCodepointsToRead ) { - if ( eSrcCharSet == RTL_TEXTENCODING_UNICODE ) + if (eSrcEncoding == RTL_TEXTENCODING_UNICODE) return ReadUniStringLine( rStr, nMaxCodepointsToRead ); else - return ReadByteStringLine( rStr, eSrcCharSet, nMaxCodepointsToRead ); + return ReadByteStringLine(rStr, eSrcEncoding, nMaxCodepointsToRead); } OString read_zeroTerminated_uInt8s_ToOString(SvStream& rStream) @@ -640,9 +640,9 @@ static std::size_t write_uInt16s_FromOUString(SvStream& rStrm, std::u16string_vi return nWritten; } -bool SvStream::WriteUnicodeOrByteText(std::u16string_view rStr, rtl_TextEncoding eDestCharSet, bool bZero) +bool SvStream::WriteUnicodeOrByteText(std::u16string_view rStr, rtl_TextEncoding eDestEncoding, bool bZero) { - if ( eDestCharSet == RTL_TEXTENCODING_UNICODE ) + if (eDestEncoding == RTL_TEXTENCODING_UNICODE) { write_uInt16s_FromOUString(*this, rStr, rStr.size()); if (bZero) @@ -650,7 +650,7 @@ bool SvStream::WriteUnicodeOrByteText(std::u16string_view rStr, rtl_TextEncoding } else { - OString aStr(OUStringToOString(rStr, eDestCharSet)); + OString aStr(OUStringToOString(rStr, eDestEncoding)); WriteBytes(aStr.getStr(), aStr.getLength()); if (bZero) WriteChar(0); @@ -658,9 +658,9 @@ bool SvStream::WriteUnicodeOrByteText(std::u16string_view rStr, rtl_TextEncoding return m_nError == ERRCODE_NONE; } -bool SvStream::WriteByteStringLine( std::u16string_view rStr, rtl_TextEncoding eDestCharSet ) +bool SvStream::WriteByteStringLine(std::u16string_view rStr, rtl_TextEncoding eDestEncoding) { - return WriteLine(OUStringToOString(rStr, eDestCharSet)); + return WriteLine(OUStringToOString(rStr, eDestEncoding)); } bool SvStream::WriteLine(std::string_view rStr) @@ -670,13 +670,13 @@ bool SvStream::WriteLine(std::string_view rStr) return m_nError == ERRCODE_NONE; } -bool SvStream::WriteUniOrByteChar( sal_Unicode ch, rtl_TextEncoding eDestCharSet ) +bool SvStream::WriteUniOrByteChar(sal_Unicode ch, rtl_TextEncoding eDestEncoding) { - if ( eDestCharSet == RTL_TEXTENCODING_UNICODE ) + if (eDestEncoding == RTL_TEXTENCODING_UNICODE) WriteUnicode(ch); else { - OString aStr(&ch, 1, eDestCharSet); + OString aStr(&ch, 1, eDestEncoding); WriteBytes(aStr.getStr(), aStr.getLength()); } return m_nError == ERRCODE_NONE; @@ -691,11 +691,11 @@ void SvStream::StartWritingUnicodeText() WriteUInt16(0xfeff); } -void SvStream::StartReadingUnicodeText( rtl_TextEncoding eReadBomCharSet ) +void SvStream::StartReadingUnicodeText(rtl_TextEncoding eReadBomEncoding) { - if (!( eReadBomCharSet == RTL_TEXTENCODING_DONTKNOW || - eReadBomCharSet == RTL_TEXTENCODING_UNICODE || - eReadBomCharSet == RTL_TEXTENCODING_UTF8)) + if (!( eReadBomEncoding == RTL_TEXTENCODING_DONTKNOW || + eReadBomEncoding == RTL_TEXTENCODING_UNICODE || + eReadBomEncoding == RTL_TEXTENCODING_UTF8)) return; // nothing to read const sal_uInt64 nOldPos = Tell(); @@ -705,8 +705,8 @@ void SvStream::StartReadingUnicodeText( rtl_TextEncoding eReadBomCharSet ) switch ( nFlag ) { case 0xfe: // UTF-16BE? - if ( eReadBomCharSet == RTL_TEXTENCODING_DONTKNOW || - eReadBomCharSet == RTL_TEXTENCODING_UNICODE) + if ( eReadBomEncoding == RTL_TEXTENCODING_DONTKNOW || + eReadBomEncoding == RTL_TEXTENCODING_UNICODE) { ReadUChar(nFlag); if (nFlag == 0xff) @@ -717,8 +717,8 @@ void SvStream::StartReadingUnicodeText( rtl_TextEncoding eReadBomCharSet ) } break; case 0xff: // UTF-16LE? - if ( eReadBomCharSet == RTL_TEXTENCODING_DONTKNOW || - eReadBomCharSet == RTL_TEXTENCODING_UNICODE) + if ( eReadBomEncoding == RTL_TEXTENCODING_DONTKNOW || + eReadBomEncoding == RTL_TEXTENCODING_UNICODE) { ReadUChar(nFlag); if (nFlag == 0xfe) @@ -729,8 +729,8 @@ void SvStream::StartReadingUnicodeText( rtl_TextEncoding eReadBomCharSet ) } break; case 0xef: // UTF-8? - if ( eReadBomCharSet == RTL_TEXTENCODING_DONTKNOW || - eReadBomCharSet == RTL_TEXTENCODING_UTF8) + if ( eReadBomEncoding == RTL_TEXTENCODING_DONTKNOW || + eReadBomEncoding == RTL_TEXTENCODING_UTF8) { ReadUChar(nFlag); if (nFlag == 0xbb) @@ -783,7 +783,7 @@ void SvStream::DetectEncoding() }); const sal_uInt64 nOrigPos = Tell(); - SetStreamCharSet(RTL_TEXTENCODING_DONTKNOW); + SetStreamEncoding(RTL_TEXTENCODING_DONTKNOW); StartReadingUnicodeText(RTL_TEXTENCODING_DONTKNOW); if (!good()) return; @@ -791,12 +791,12 @@ void SvStream::DetectEncoding() const sal_uInt64 nBomSize = Tell() - nOrigPos; if (nBomSize == 2) { - SetStreamCharSet(RTL_TEXTENCODING_UCS2); + SetStreamEncoding(RTL_TEXTENCODING_UCS2); return; } if (nBomSize == 3) { - SetStreamCharSet(RTL_TEXTENCODING_UTF8); + SetStreamEncoding(RTL_TEXTENCODING_UTF8); return; } @@ -832,7 +832,7 @@ void SvStream::DetectEncoding() return; rtl_TextEncoding eEncoding = it->second; - SetStreamCharSet(eEncoding); + SetStreamEncoding(eEncoding); if (eEncoding == RTL_TEXTENCODING_UCS2) { if (it->first == "UTF-16LE") @@ -1133,21 +1133,21 @@ sal_uInt64 SvStream::WriteStream( SvStream& rStream, sal_uInt64 nSize ) return nSize - nWriteSize; } -OUString SvStream::ReadUniOrByteString( rtl_TextEncoding eSrcCharSet ) +OUString SvStream::ReadUniOrByteString(rtl_TextEncoding eSrcEncoding) { // read UTF-16 string directly from stream ? - if (eSrcCharSet == RTL_TEXTENCODING_UNICODE) + if (eSrcEncoding == RTL_TEXTENCODING_UNICODE) return read_uInt32_lenPrefixed_uInt16s_ToOUString(*this); - return read_uInt16_lenPrefixed_uInt8s_ToOUString(*this, eSrcCharSet); + return read_uInt16_lenPrefixed_uInt8s_ToOUString(*this, eSrcEncoding); } -SvStream& SvStream::WriteUniOrByteString( std::u16string_view rStr, rtl_TextEncoding eDestCharSet ) +SvStream& SvStream::WriteUniOrByteString(std::u16string_view rStr, rtl_TextEncoding eDestEncoding) { // write UTF-16 string directly into stream ? - if (eDestCharSet == RTL_TEXTENCODING_UNICODE) + if (eDestEncoding == RTL_TEXTENCODING_UNICODE) write_uInt32_lenPrefixed_uInt16s_FromOUString(*this, rStr); else - write_uInt16_lenPrefixed_uInt8s_FromOUString(*this, rStr, eDestCharSet); + write_uInt16_lenPrefixed_uInt8s_FromOUString(*this, rStr, eDestEncoding); return *this; } @@ -1545,7 +1545,7 @@ SvStream& endlu( SvStream& rStrm ) SvStream& endlub( SvStream& rStrm ) { - if ( rStrm.GetStreamCharSet() == RTL_TEXTENCODING_UNICODE ) + if (rStrm.GetStreamEncoding() == RTL_TEXTENCODING_UNICODE) return endlu( rStrm ); else return endl( rStrm ); diff --git a/vcl/source/edit/texteng.cxx b/vcl/source/edit/texteng.cxx index 805d75588bde..a766172e4a5a 100644 --- a/vcl/source/edit/texteng.cxx +++ b/vcl/source/edit/texteng.cxx @@ -2415,12 +2415,12 @@ bool TextEngine::Read( SvStream& rInput, const TextSelection* pSel ) OStringBuffer aLine; bool bDone = rInput.ReadLine( aLine ); - OUString aTmpStr(OStringToOUString(aLine, rInput.GetStreamCharSet())); + OUString aTmpStr(OStringToOUString(aLine, rInput.GetStreamEncoding())); while ( bDone ) { aSel = ImpInsertText( aSel, aTmpStr ); bDone = rInput.ReadLine( aLine ); - aTmpStr = OStringToOUString(aLine, rInput.GetStreamCharSet()); + aTmpStr = OStringToOUString(aLine, rInput.GetStreamEncoding()); if ( bDone ) aSel = ImpInsertParaBreak( aSel.GetEnd() ); } @@ -2457,7 +2457,7 @@ void TextEngine::Write( SvStream& rOutput ) ? aSel.GetEnd().GetIndex() : pNode->GetText().getLength(); const OUString aText = pNode->GetText().copy( nStartPos, nEndPos-nStartPos ); - rOutput.WriteLine(OUStringToOString(aText, rOutput.GetStreamCharSet())); + rOutput.WriteLine(OUStringToOString(aText, rOutput.GetStreamEncoding())); } } diff --git a/vcl/source/filter/svm/SvmConverter.cxx b/vcl/source/filter/svm/SvmConverter.cxx index 51d480f29e83..171b8140347c 100644 --- a/vcl/source/filter/svm/SvmConverter.cxx +++ b/vcl/source/filter/svm/SvmConverter.cxx @@ -659,7 +659,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) ImplReadColor( rIStm, aActionColor ); aFont.SetFillColor( aActionColor ); size_t nRet = rIStm.ReadBytes(aName, LF_FACESIZE); aName[nRet] = 0; - aFont.SetFamilyName( OUString( aName, strlen(aName), rIStm.GetStreamCharSet() ) ); + aFont.SetFamilyName( OUString( aName, strlen(aName), rIStm.GetStreamEncoding() ) ); sal_Int32 nWidth(0), nHeight(0); rIStm.ReadInt32(nWidth).ReadInt32(nHeight); diff --git a/vcl/source/filter/svm/SvmReader.cxx b/vcl/source/filter/svm/SvmReader.cxx index 24c03a6ef4c8..905816b4b4b4 100644 --- a/vcl/source/filter/svm/SvmReader.cxx +++ b/vcl/source/filter/svm/SvmReader.cxx @@ -47,7 +47,7 @@ public: , m_eOrigCharSet(m_rData.meActualCharSet) { ++m_rData.mnParseDepth; - m_rData.meActualCharSet = rIStm.GetStreamCharSet(); + m_rData.meActualCharSet = rIStm.GetStreamEncoding(); } bool TooDeep() const { return m_rData.mnParseDepth > 1024; } ~DepthGuard() diff --git a/vcl/source/filter/svm/SvmWriter.cxx b/vcl/source/filter/svm/SvmWriter.cxx index b6f3cee62138..53d18830311d 100644 --- a/vcl/source/filter/svm/SvmWriter.cxx +++ b/vcl/source/filter/svm/SvmWriter.cxx @@ -59,7 +59,7 @@ SvStream& SvmWriter::Write(const GDIMetaFile& rMetaFile) ImplMetaWriteData aWriteData; - aWriteData.meActualCharSet = mrStream.GetStreamCharSet(); + aWriteData.meActualCharSet = mrStream.GetStreamEncoding(); MetaAction* pAct = const_cast<GDIMetaFile&>(rMetaFile).FirstAction(); while (pAct) @@ -82,7 +82,7 @@ BitmapChecksum SvmWriter::GetChecksum(const GDIMetaFile& rMetaFile) BitmapChecksumOctetArray aBCOA; BitmapChecksum nCrc = 0; - aWriteData.meActualCharSet = aMemStm.GetStreamCharSet(); + aWriteData.meActualCharSet = aMemStm.GetStreamEncoding(); for (size_t i = 0, nObjCount = rMetaFile.GetActionSize(); i < nObjCount; i++) { diff --git a/vcl/source/font/font.cxx b/vcl/source/font/font.cxx index d84d2d28e6a2..5801873a8319 100644 --- a/vcl/source/font/font.cxx +++ b/vcl/source/font/font.cxx @@ -474,8 +474,8 @@ SvStream& ReadImplFont( SvStream& rIStm, ImplFont& rImplFont, tools::Long& rnNor bool bTmp(false); sal_uInt8 nTmp8(0); - rImplFont.SetFamilyName( rIStm.ReadUniOrByteString(rIStm.GetStreamCharSet()) ); - rImplFont.maStyleName = rIStm.ReadUniOrByteString(rIStm.GetStreamCharSet()); + rImplFont.SetFamilyName( rIStm.ReadUniOrByteString(rIStm.GetStreamEncoding()) ); + rImplFont.maStyleName = rIStm.ReadUniOrByteString(rIStm.GetStreamEncoding()); TypeSerializer aSerializer(rIStm); aSerializer.readSize(rImplFont.maAverageFontSize); @@ -552,8 +552,8 @@ SvStream& WriteImplFont( SvStream& rOStm, const ImplFont& rImplFont, tools::Long VersionCompatWrite aCompat( rOStm, 5 ); TypeSerializer aSerializer(rOStm); - rOStm.WriteUniOrByteString( rImplFont.GetFamilyName(), rOStm.GetStreamCharSet() ); - rOStm.WriteUniOrByteString( rImplFont.GetStyleName(), rOStm.GetStreamCharSet() ); + rOStm.WriteUniOrByteString( rImplFont.GetFamilyName(), rOStm.GetStreamEncoding() ); + rOStm.WriteUniOrByteString( rImplFont.GetStyleName(), rOStm.GetStreamEncoding() ); aSerializer.writeSize(rImplFont.maAverageFontSize); rOStm.WriteUInt16( GetStoreCharSet( rImplFont.GetCharSet() ) ); diff --git a/vcl/source/gdi/TypeSerializer.cxx b/vcl/source/gdi/TypeSerializer.cxx index a8e7b17a5332..da83303cfdbc 100644 --- a/vcl/source/gdi/TypeSerializer.cxx +++ b/vcl/source/gdi/TypeSerializer.cxx @@ -399,7 +399,7 @@ void TypeSerializer::writeGraphic(const Graphic& rGraphic) pVectorGraphicData->getBinaryDataContainer().writeToStream(mrStream); // For backwards compatibility, used to serialize path - mrStream.WriteUniOrByteString(u"", mrStream.GetStreamCharSet()); + mrStream.WriteUniOrByteString(u"", mrStream.GetStreamEncoding()); } else if (aGraphic.IsAnimated()) { diff --git a/vcl/source/gdi/jobset.cxx b/vcl/source/gdi/jobset.cxx index 4ac341f47e59..b3d8710ac38c 100644 --- a/vcl/source/gdi/jobset.cxx +++ b/vcl/source/gdi/jobset.cxx @@ -255,7 +255,7 @@ SvStream& ReadJobSetup( SvStream& rIStream, JobSetup& rJobSetup ) rtl_TextEncoding aStreamEncoding = RTL_TEXTENCODING_UTF8; if( nSystem == JOBSET_FILE364_SYSTEM ) - aStreamEncoding = rIStream.GetStreamCharSet(); + aStreamEncoding = rIStream.GetStreamEncoding(); ImplJobSetup& rJobData = rJobSetup.ImplGetData(); commit 610168656a6fdacbd05afe7a85869a173e7455ef Author: Mike Kaganski <[email protected]> AuthorDate: Wed Feb 25 11:13:12 2026 +0500 Commit: Mike Kaganski <[email protected]> CommitDate: Wed Feb 25 10:33:49 2026 +0100 Move encoding detection to SvStream Allows to avoid similar code in SwIoSystem and SfxObjectShell, and unifies the code. Change-Id: I16817f2aea5bdabb9bf3505f2f3c2f697e3106e8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200284 Tested-by: Jenkins Reviewed-by: Mike Kaganski <[email protected]> diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx index a54ad4733765..a5cd05467e46 100644 --- a/include/sfx2/objsh.hxx +++ b/include/sfx2/objsh.hxx @@ -455,7 +455,6 @@ public: const css::uno::Sequence< css::beans::PropertyValue >& GetModifyPasswordInfo() const; bool SetModifyPasswordInfo( const css::uno::Sequence< css::beans::PropertyValue >& aInfo ); - static void DetectCharSet(SvStream& stream, rtl_TextEncoding& eCharSet, SvStreamEndian& endian); static void DetectCsvSeparators(SvStream& stream, rtl_TextEncoding eCharSet, OUString& separators, sal_Unicode cStringDelimiter); static void DetectCsvFilterOptions(SvStream& stream, OUString& aFilterOptions); static void DetectFilterOptions(SfxMedium* pMedium); diff --git a/include/tools/stream.hxx b/include/tools/stream.hxx index 43c2b028d36c..5616c3604b33 100644 --- a/include/tools/stream.hxx +++ b/include/tools/stream.hxx @@ -326,6 +326,12 @@ public: encoding and switch endian swapping if UTF-16 and 0xfffe. */ void StartReadingUnicodeText( rtl_TextEncoding eReadBomCharSet ); + /** Try StartWritingUnicodeText; if failed, use ICU to detect encoding from data. + After the function, the position is after BOM (if any); GetStreamCharSet + returns the detected encoding; GetEndian returns the detected endianness + (for UTF-16). */ + void DetectEncoding(); + /** Read a line of Unicode. @param nMaxCodepointsToRead diff --git a/sc/source/ui/dbgui/asciiopt.cxx b/sc/source/ui/dbgui/asciiopt.cxx index 6c48d5c41511..3ef8150cc7a8 100644 --- a/sc/source/ui/dbgui/asciiopt.cxx +++ b/sc/source/ui/dbgui/asciiopt.cxx @@ -121,13 +121,11 @@ void ScAsciiOptions::ReadFromString( std::u16string_view rString, SvStream* pStr if ( nPos >= 0 ) { const std::u16string_view aToken = o3tl::getToken(rString, 0, ',', nPos); - SvStreamEndian endian; bool bDetectCharSet = aToken == pStrDet; if ( bDetectCharSet && pStream4Detect ) { - SfxObjectShell::DetectCharSet(*pStream4Detect, eCharSet, endian); - if (eCharSet == RTL_TEXTENCODING_UNICODE) - pStream4Detect->SetEndian(endian); + pStream4Detect->DetectEncoding(); + eCharSet = pStream4Detect->GetStreamCharSet(); } else if (!bDetectCharSet) eCharSet = ScGlobal::GetCharsetValue( aToken ); diff --git a/sc/source/ui/dbgui/scuiasciiopt.cxx b/sc/source/ui/dbgui/scuiasciiopt.cxx index f6dd6db1774c..20fd26fa7ac6 100644 --- a/sc/source/ui/dbgui/scuiasciiopt.cxx +++ b/sc/source/ui/dbgui/scuiasciiopt.cxx @@ -372,11 +372,9 @@ ScImportAsciiDlg::ScImportAsciiDlg(weld::Window* pParent, std::u16string_view aD mxRbDetectSep->set_active(true); // Detect character set only once and then use it for "Detect" option. - SvStreamEndian eEndian; - SfxObjectShell::DetectCharSet(*mpDatStream, meDetectedCharSet, eEndian); - if (meDetectedCharSet == RTL_TEXTENCODING_UNICODE) - mpDatStream->SetEndian(eEndian); - else if ( meDetectedCharSet == RTL_TEXTENCODING_DONTKNOW ) + mpDatStream->DetectEncoding(); + meDetectedCharSet = mpDatStream->GetStreamCharSet(); + if (meDetectedCharSet == RTL_TEXTENCODING_DONTKNOW) { meDetectedCharSet = osl_getThreadTextEncoding(); // Prefer UTF-8, as UTF-16 would have already been detected from the stream. diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx index 8c5e423dcb7f..70ddb66ead03 100644 --- a/sfx2/source/doc/objstor.cxx +++ b/sfx2/source/doc/objstor.cxx @@ -125,7 +125,6 @@ #include <guisaveas.hxx> #include "objstor.hxx" #include "exoticfileloadexception.hxx" -#include <unicode/ucsdet.h> #include <o3tl/string_view.hxx> using namespace ::com::sun::star; @@ -881,78 +880,6 @@ bool SfxObjectShell::DoLoadExternal( SfxMedium *pMed ) return LoadExternal(*pMedium); } -const ::std::unordered_map<std::string, rtl_TextEncoding> mapCharSets = - {{"UTF-8", RTL_TEXTENCODING_UTF8}, - {"UTF-16BE", RTL_TEXTENCODING_UCS2}, - {"UTF-16LE", RTL_TEXTENCODING_UCS2}, - {"UTF-32BE", RTL_TEXTENCODING_UCS4}, - {"UTF-32LE", RTL_TEXTENCODING_UCS4}, - {"Shift_JIS", RTL_TEXTENCODING_SHIFT_JIS}, - {"ISO-2022-JP", RTL_TEXTENCODING_ISO_2022_JP}, - {"ISO-2022-CN", RTL_TEXTENCODING_ISO_2022_CN}, - {"ISO-2022-KR", RTL_TEXTENCODING_ISO_2022_KR}, - {"GB18030", RTL_TEXTENCODING_GB_18030}, - {"Big5", RTL_TEXTENCODING_BIG5}, - {"EUC-JP", RTL_TEXTENCODING_EUC_JP}, - {"EUC-KR", RTL_TEXTENCODING_EUC_KR}, - {"ISO-8859-1", RTL_TEXTENCODING_ISO_8859_1}, - {"ISO-8859-2", RTL_TEXTENCODING_ISO_8859_2}, - {"ISO-8859-5", RTL_TEXTENCODING_ISO_8859_5}, - {"ISO-8859-6", RTL_TEXTENCODING_ISO_8859_6}, - {"ISO-8859-7", RTL_TEXTENCODING_ISO_8859_7}, - {"ISO-8859-8", RTL_TEXTENCODING_ISO_8859_8}, - {"ISO-8859-9", RTL_TEXTENCODING_ISO_8859_9}, - {"windows-1250", RTL_TEXTENCODING_MS_1250}, - {"windows-1251", RTL_TEXTENCODING_MS_1251}, - {"windows-1252", RTL_TEXTENCODING_MS_1252}, - {"windows-1253", RTL_TEXTENCODING_MS_1253}, - {"windows-1254", RTL_TEXTENCODING_MS_1254}, - {"windows-1255", RTL_TEXTENCODING_MS_1255}, - {"windows-1256", RTL_TEXTENCODING_MS_1256}, - {"KOI8-R", RTL_TEXTENCODING_KOI8_R}}; - -void SfxObjectShell::DetectCharSet(SvStream& stream, rtl_TextEncoding& eCharSet, SvStreamEndian &endian) -{ - constexpr size_t buffsize = 4096; - sal_Int8 bytes[buffsize] = { 0 }; - sal_uInt64 nInitPos = stream.Tell(); - sal_Int32 nRead = stream.ReadBytes(bytes, buffsize); - - stream.Seek(nInitPos); - eCharSet = RTL_TEXTENCODING_DONTKNOW; - - if (!nRead) - return; - - UErrorCode uerr = U_ZERO_ERROR; - UCharsetDetector* ucd = ucsdet_open(&uerr); - if (!U_SUCCESS(uerr)) - return; - - const UCharsetMatch* match = nullptr; - const char* pEncodingName = nullptr; - ucsdet_setText(ucd, reinterpret_cast<const char*>(bytes), nRead, &uerr); - if (U_SUCCESS(uerr)) - match = ucsdet_detect(ucd, &uerr); - - if (U_SUCCESS(uerr)) - pEncodingName = ucsdet_getName(match, &uerr); - - if (U_SUCCESS(uerr) && pEncodingName) - { - const auto it = mapCharSets.find(pEncodingName); - if (it != mapCharSets.end()) - eCharSet = it->second; - - if (eCharSet == RTL_TEXTENCODING_UNICODE && !strcmp("UTF-16LE", pEncodingName)) - endian = SvStreamEndian::LITTLE; - else if (eCharSet == RTL_TEXTENCODING_UNICODE && !strcmp("UTF-16BE", pEncodingName)) - endian = SvStreamEndian::BIG; - } - - ucsdet_close(ucd); -} - void SfxObjectShell::DetectCsvSeparators(SvStream& stream, rtl_TextEncoding eCharSet, OUString& separators, sal_Unicode cStringDelimiter) { OUString sLine; @@ -1123,10 +1050,8 @@ void SfxObjectShell::DetectCsvFilterOptions(SvStream& stream, OUString& aFilterO // Detect charset if (aCharSet == aDetect) { - SvStreamEndian endian; - DetectCharSet(stream, eCharSet, endian); - if (eCharSet == RTL_TEXTENCODING_UNICODE) - stream.SetEndian(endian); + stream.DetectEncoding(); + eCharSet = stream.GetStreamCharSet(); } else if (!aCharSet.empty()) eCharSet = o3tl::toInt32(aCharSet); diff --git a/sw/inc/iodetect.hxx b/sw/inc/iodetect.hxx index 1ab043a6cffc..0770731aaeba 100644 --- a/sw/inc/iodetect.hxx +++ b/sw/inc/iodetect.hxx @@ -108,8 +108,6 @@ public: static bool IsValidStgFilter( SotStorage& , const SfxFilter& ); static bool IsValidStgFilter( const css::uno::Reference < css::embed::XStorage >& rStg, const SfxFilter& rFilter); - // tdf#106899 - wrapper around IsDetectableText to retrieve the text encoding for a given stream - SW_DLLPUBLIC static rtl_TextEncoding GetTextEncoding(SvStream&); static bool IsDetectableText( const char* pBuf, sal_uLong &rLen, rtl_TextEncoding *pCharSet, bool *pSwap, LineEnd *pLineEnd, bool *pBom); diff --git a/sw/source/core/edit/edtox.cxx b/sw/source/core/edit/edtox.cxx index 59320c2e768e..437b5f41e182 100644 --- a/sw/source/core/edit/edtox.cxx +++ b/sw/source/core/edit/edtox.cxx @@ -296,7 +296,8 @@ void SwEditShell::ApplyAutoMark() SvStream& rStrm = *aMedium.GetInStream(); Push(); // tdf#106899 - import tox concordance file using the appropriate character set - rtl_TextEncoding eChrSet = SwIoSystem::GetTextEncoding(rStrm); + rStrm.DetectEncoding(); + rtl_TextEncoding eChrSet = rStrm.GetStreamCharSet(); if (eChrSet == RTL_TEXTENCODING_DONTKNOW) eChrSet = ::osl_getThreadTextEncoding(); diff --git a/sw/source/filter/basflt/iodetect.cxx b/sw/source/filter/basflt/iodetect.cxx index 5e2acab50033..e1a6312f2dd0 100644 --- a/sw/source/filter/basflt/iodetect.cxx +++ b/sw/source/filter/basflt/iodetect.cxx @@ -240,87 +240,15 @@ std::shared_ptr<const SfxFilter> SwIoSystem::GetFileFilter(const OUString& rFile return SwIoSystem::GetFilterOfFormat(FILTER_TEXT); } -rtl_TextEncoding SwIoSystem::GetTextEncoding(SvStream& rStrm) -{ - sal_uLong nLen, nOrig; - char aBuf[4096]; - nOrig = nLen = rStrm.ReadBytes(aBuf, sizeof(aBuf)); - - rtl_TextEncoding eCharSet = RTL_TEXTENCODING_DONTKNOW; - const bool bRet = SwIoSystem::IsDetectableText(aBuf, nLen, &eCharSet, nullptr, nullptr, nullptr); - if (bRet && eCharSet != RTL_TEXTENCODING_DONTKNOW) - rStrm.SeekRel(-(tools::Long(nLen))); - else - rStrm.SeekRel(-(tools::Long(nOrig))); - - return eCharSet; -} - bool SwIoSystem::IsDetectableText(const char* pBuf, sal_uLong &rLen, rtl_TextEncoding *pCharSet, bool *pSwap, LineEnd *pLineEnd, bool *pBom) { - bool bSwap = false; - rtl_TextEncoding eCharSet = RTL_TEXTENCODING_DONTKNOW; - bool bLE = true; - bool bBom = false; - /*See if it's a known unicode type*/ - if (rLen >= 2) - { - sal_uLong nHead=0; - if (rLen > 2 && sal_uInt8(pBuf[0]) == 0xEF && sal_uInt8(pBuf[1]) == 0xBB && - sal_uInt8(pBuf[2]) == 0xBF) - { - eCharSet = RTL_TEXTENCODING_UTF8; - nHead = 3; - bBom = true; - } - else if (sal_uInt8(pBuf[0]) == 0xFE && sal_uInt8(pBuf[1]) == 0xFF) - { - eCharSet = RTL_TEXTENCODING_UCS2; - bLE = false; - nHead = 2; - bBom = true; - } - else if (sal_uInt8(pBuf[1]) == 0xFE && sal_uInt8(pBuf[0]) == 0xFF) - { - eCharSet = RTL_TEXTENCODING_UCS2; - nHead = 2; - bBom = true; - } - pBuf+=nHead; - rLen-=nHead; - } - /*See unicode type again without BOM*/ - if (rLen >= 1 && eCharSet == RTL_TEXTENCODING_DONTKNOW) - { - UErrorCode uerr = U_ZERO_ERROR; - UCharsetDetector* ucd = ucsdet_open(&uerr); - ucsdet_setText(ucd, pBuf, rLen, &uerr); - if (const UCharsetMatch* match = ucsdet_detect(ucd, &uerr)) - { - const char* pEncodingName = ucsdet_getName(match, &uerr); - - if (U_SUCCESS(uerr) && !strcmp("UTF-8", pEncodingName)) - { - eCharSet = RTL_TEXTENCODING_UTF8; // UTF-8 - } - else if (U_SUCCESS(uerr) && !strcmp("UTF-16BE", pEncodingName)) - { - eCharSet = RTL_TEXTENCODING_UCS2; // UTF-16BE - bLE = false; - } - else if (U_SUCCESS(uerr) && !strcmp("UTF-16LE", pEncodingName)) - { - eCharSet = RTL_TEXTENCODING_UCS2; // UTF-16LE - } - else if (U_SUCCESS(uerr) && !strcmp("GB18030", pEncodingName)) - { - eCharSet = RTL_TEXTENCODING_GB_18030; - } - } - - ucsdet_close(ucd); - } + SvMemoryStream aStream(const_cast<char*>(pBuf), rLen, StreamMode::READ); + aStream.DetectEncoding(); + rtl_TextEncoding eCharSet = aStream.GetStreamCharSet(); + auto nBomSize = aStream.Tell(); + pBuf += nBomSize; + rLen -= nBomSize; bool bCR = false, bLF = false, bIsBareUnicode = false; @@ -352,14 +280,8 @@ bool SwIoSystem::IsDetectableText(const char* pBuf, sal_uLong &rLen, { nNewLen = rLen/2; memcpy(pNewBuf, pBuf, rLen); -#ifdef OSL_LITENDIAN - bool const bNativeLE = true; -#else - bool const bNativeLE = false; -#endif - if (bLE != bNativeLE) + if (aStream.IsEndianSwap()) { - bSwap = true; for (sal_uLong n = 0; n < nNewLen; ++n) pNewBuf[n] = OSL_SWAPWORD(pNewBuf[n]); } @@ -417,11 +339,11 @@ bool SwIoSystem::IsDetectableText(const char* pBuf, sal_uLong &rLen, if (pCharSet) *pCharSet = eCharSet; if (pSwap) - *pSwap = bSwap; + *pSwap = aStream.IsEndianSwap(); if (pLineEnd) *pLineEnd = eLineEnd; if (pBom) - *pBom = bBom; + *pBom = nBomSize != 0; return !bIsBareUnicode; } diff --git a/sw/source/filter/md/swmd.cxx b/sw/source/filter/md/swmd.cxx index 8581c9aafe17..c421ee372a01 100644 --- a/sw/source/filter/md/swmd.cxx +++ b/sw/source/filter/md/swmd.cxx @@ -842,28 +842,13 @@ ErrCodeMsg MarkdownReader::Read(SwDoc& rDoc, const OUString& rBaseURL, SwPaM& rP ErrCode SwMarkdownParser::CallParser() { // use utf8 - m_rInput.StartReadingUnicodeText(RTL_TEXTENCODING_DONTKNOW); - if (!m_rInput.good()) + m_rInput.DetectEncoding(); + const rtl_TextEncoding eSrcEnc = m_rInput.GetStreamCharSet(); + if (eSrcEnc == RTL_TEXTENCODING_DONTKNOW) { return ERRCODE_IO_INVALIDCHAR; } - rtl_TextEncoding eSrcEnc; - const sal_uInt64 nPos = m_rInput.Tell(); //bom size - if (nPos == 2) - eSrcEnc = RTL_TEXTENCODING_UCS2; - else if (nPos == 3) - eSrcEnc = RTL_TEXTENCODING_UTF8; - else - { - SvStreamEndian eEndian; - SfxObjectShell::DetectCharSet(m_rInput, eSrcEnc, eEndian); - if (eSrcEnc == RTL_TEXTENCODING_DONTKNOW) - return ERRCODE_IO_INVALIDCHAR; - m_rInput.SetEndian(eEndian); - } - - m_rInput.ResetError(); const sal_uInt64 nFilesize = m_rInput.remainingSize(); OString sUtf8Data; diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx index c17253bf676b..58fddcba88c3 100644 --- a/sw/source/ui/index/cnttab.cxx +++ b/sw/source/ui/index/cnttab.cxx @@ -4006,7 +4006,8 @@ void SwEntryBrowseBox::ReadEntries(SvStream& rInStr) { AutoMarkEntry* pToInsert = nullptr; // tdf#108910, tdf#125496 - read index entries using the appropriate character set - rtl_TextEncoding eTEnc = SwIoSystem::GetTextEncoding(rInStr); + rInStr.DetectEncoding(); + rtl_TextEncoding eTEnc = rInStr.GetStreamCharSet(); if (eTEnc == RTL_TEXTENCODING_DONTKNOW) eTEnc = osl_getThreadTextEncoding(); while (rInStr.good()) diff --git a/tools/Library_tl.mk b/tools/Library_tl.mk index 5c3a7e453137..44a97499491e 100644 --- a/tools/Library_tl.mk +++ b/tools/Library_tl.mk @@ -108,6 +108,10 @@ $(eval $(call gb_Library_add_generated_exception_objects,tl,\ $(eval $(call gb_Library_use_externals,tl,\ boost_headers \ + frozen \ + icu_headers \ + icui18n \ + icuuc \ zlib \ libxml2 \ )) diff --git a/tools/source/stream/stream.cxx b/tools/source/stream/stream.cxx index e9775d4b3524..40f2c8461244 100644 --- a/tools/source/stream/stream.cxx +++ b/tools/source/stream/stream.cxx @@ -39,6 +39,12 @@ #include <comphelper/fileformat.h> #include <comphelper/fileurl.hxx> +#include <comphelper/scopeguard.hxx> + +#include <unicode/ucsdet.h> + +#include <frozen/bits/elsa_std.h> +#include <frozen/unordered_map.h> static void swapNibbles(unsigned char &c) { @@ -742,6 +748,100 @@ void SvStream::StartReadingUnicodeText( rtl_TextEncoding eReadBomCharSet ) Seek(nOldPos); // no BOM, pure data } +void SvStream::DetectEncoding() +{ + static constexpr auto mapEncodings + = frozen::make_unordered_map<std::string_view, rtl_TextEncoding>({ + { "UTF-8", RTL_TEXTENCODING_UTF8 }, + { "UTF-16BE", RTL_TEXTENCODING_UCS2 }, + { "UTF-16LE", RTL_TEXTENCODING_UCS2 }, + //{ "UTF-32BE", RTL_TEXTENCODING_UCS4 }, + //{ "UTF-32LE", RTL_TEXTENCODING_UCS4 }, + { "Shift_JIS", RTL_TEXTENCODING_SHIFT_JIS }, + { "ISO-2022-JP", RTL_TEXTENCODING_ISO_2022_JP }, + { "ISO-2022-CN", RTL_TEXTENCODING_ISO_2022_CN }, + { "ISO-2022-KR", RTL_TEXTENCODING_ISO_2022_KR }, + { "GB18030", RTL_TEXTENCODING_GB_18030 }, + { "Big5", RTL_TEXTENCODING_BIG5 }, + { "EUC-JP", RTL_TEXTENCODING_EUC_JP }, + { "EUC-KR", RTL_TEXTENCODING_EUC_KR }, + { "ISO-8859-1", RTL_TEXTENCODING_ISO_8859_1 }, + { "ISO-8859-2", RTL_TEXTENCODING_ISO_8859_2 }, + { "ISO-8859-5", RTL_TEXTENCODING_ISO_8859_5 }, + { "ISO-8859-6", RTL_TEXTENCODING_ISO_8859_6 }, + { "ISO-8859-7", RTL_TEXTENCODING_ISO_8859_7 }, + { "ISO-8859-8", RTL_TEXTENCODING_ISO_8859_8 }, + { "ISO-8859-9", RTL_TEXTENCODING_ISO_8859_9 }, + { "windows-1250", RTL_TEXTENCODING_MS_1250 }, + { "windows-1251", RTL_TEXTENCODING_MS_1251 }, + { "windows-1252", RTL_TEXTENCODING_MS_1252 }, + { "windows-1253", RTL_TEXTENCODING_MS_1253 }, + { "windows-1254", RTL_TEXTENCODING_MS_1254 }, + { "windows-1255", RTL_TEXTENCODING_MS_1255 }, + { "windows-1256", RTL_TEXTENCODING_MS_1256 }, + { "KOI8-R", RTL_TEXTENCODING_KOI8_R }, + }); + + const sal_uInt64 nOrigPos = Tell(); + SetStreamCharSet(RTL_TEXTENCODING_DONTKNOW); + StartReadingUnicodeText(RTL_TEXTENCODING_DONTKNOW); + if (!good()) + return; + + const sal_uInt64 nBomSize = Tell() - nOrigPos; + if (nBomSize == 2) + { + SetStreamCharSet(RTL_TEXTENCODING_UCS2); + return; + } + if (nBomSize == 3) + { + SetStreamCharSet(RTL_TEXTENCODING_UTF8); + return; + } + + assert(nBomSize == 0); // we are at nOrigPos + char bytes[4096] = { 0 }; + size_t nRead = ReadBytes(bytes, sizeof(bytes)); + Seek(nOrigPos); + ResetError(); + + if (nRead == 0) + return; + + UErrorCode uerr = U_ZERO_ERROR; + UCharsetDetector* ucd = ucsdet_open(&uerr); + if (!U_SUCCESS(uerr)) + return; + comphelper::ScopeGuard ucsdet_close_guard([ucd] { ucsdet_close(ucd); }); + + ucsdet_setText(ucd, bytes, nRead, &uerr); + if (!U_SUCCESS(uerr)) + return; + + const UCharsetMatch* match = ucsdet_detect(ucd, &uerr); + if (!U_SUCCESS(uerr)) + return; + + const char* pEncodingName = ucsdet_getName(match, &uerr); + if (!U_SUCCESS(uerr) || !pEncodingName) + return; + + const auto it = mapEncodings.find(pEncodingName); + if (it == mapEncodings.end()) + return; + + rtl_TextEncoding eEncoding = it->second; + SetStreamCharSet(eEncoding); + if (eEncoding == RTL_TEXTENCODING_UCS2) + { + if (it->first == "UTF-16LE") + SetEndian(SvStreamEndian::LITTLE); + else if (it->first == "UTF-16BE") + SetEndian(SvStreamEndian::BIG); + } +} + sal_uInt64 SvStream::SeekRel(sal_Int64 const nPos) { sal_uInt64 nActualPos = Tell();
