1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_l10ntools.hxx" 30 #include "utf8conv.hxx" 31 32 // 33 // class UTF8Converter 34 // 35 36 #define MAX_CONV_BUFFER_SIZE 0xFF00 37 38 #define TO_CVTFLAGS (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MAPTOPRIVATE |\ 39 RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_DEFAULT |\ 40 RTL_TEXTTOUNICODE_FLAGS_INVALID_DEFAULT) 41 42 #define FROM_CVTFLAGS (RTL_UNICODETOTEXT_FLAGS_UNDEFINED_DEFAULT |\ 43 RTL_UNICODETOTEXT_FLAGS_INVALID_DEFAULT |\ 44 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACE |\ 45 RTL_UNICODETOTEXT_FLAGS_PRIVATE_MAPTO0) 46 47 /*****************************************************************************/ 48 void UTF8Converter::Convert( ByteString &rBuffer, 49 rtl_TextEncoding nSourceENC, rtl_TextEncoding nDestENC ) 50 /*****************************************************************************/ 51 { 52 String sTemp( rBuffer, nSourceENC ); 53 rBuffer = ByteString( sTemp, nDestENC ); 54 } 55 56 /*****************************************************************************/ 57 ByteString UTF8Converter::ConvertToUTF8( 58 const ByteString &rASCII, rtl_TextEncoding nEncoding ) 59 /*****************************************************************************/ 60 { 61 ByteString sReturn( rASCII ); 62 Convert( sReturn, nEncoding, RTL_TEXTENCODING_UTF8 ); 63 return sReturn; 64 } 65 66 /*****************************************************************************/ 67 ByteString UTF8Converter::ConvertFromUTF8( 68 const ByteString &rUTF8, rtl_TextEncoding nEncoding ) 69 /*****************************************************************************/ 70 { 71 ByteString sReturn( rUTF8 ); 72 Convert( sReturn, RTL_TEXTENCODING_UTF8, nEncoding ); 73 return sReturn; 74 } 75