diff options
author | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2021-03-22 16:25:38 +0100 |
---|---|---|
committer | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2021-03-22 16:25:38 +0100 |
commit | 9bbf5b653324ea567269b5ac18e09853dff4a0cd (patch) | |
tree | 83dfbff83b54421879f667748d84d24e748a3a86 | |
parent | 0d36bda438c8c1e33ef9aada24a65d8bb8107c6c (diff) |
Read the json as utf-8 for versions 17+
Change-Id: I4fa754ba03be06594e421de1d03be25aec0e5c1e
-rw-r--r-- | src/lib/CDRParser.cpp | 2 | ||||
-rw-r--r-- | src/lib/libcdr_utils.cpp | 9 | ||||
-rw-r--r-- | src/lib/libcdr_utils.h | 1 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp index 62bdf0d..045a1b9 100644 --- a/src/lib/CDRParser.cpp +++ b/src/lib/CDRParser.cpp @@ -3055,7 +3055,7 @@ void libcdr::CDRParser::_readX6StyleString(librevenge::RVNGInputStream *input, u memcpy(&styleBuffer[0], tmpBuffer, numBytesRead); librevenge::RVNGString styleString; if (m_version >= 1700) - libcdr::appendCharacters(styleString, styleBuffer, 0); + libcdr::appendUTF8Characters(styleString, styleBuffer); else libcdr::appendCharacters(styleString, styleBuffer); CDR_DEBUG_MSG(("CDRParser::_readX6StyleString - styleString = \"%s\"\n", styleString.cstr())); diff --git a/src/lib/libcdr_utils.cpp b/src/lib/libcdr_utils.cpp index 250f0a0..c900b0a 100644 --- a/src/lib/libcdr_utils.cpp +++ b/src/lib/libcdr_utils.cpp @@ -462,6 +462,15 @@ void libcdr::appendCharacters(librevenge::RVNGString &text, std::vector<unsigned ucnv_close(conv); } +void libcdr::appendUTF8Characters(librevenge::RVNGString &text, std::vector<unsigned char> characters) +{ + if (characters.empty()) + return; + + for (std::vector<unsigned char>::const_iterator iter = characters.begin(); iter != characters.end(); ++iter) + text.append((char)*iter); +} + #ifdef DEBUG void libcdr::debugPrint(const char *const format, ...) diff --git a/src/lib/libcdr_utils.h b/src/lib/libcdr_utils.h index a4472fc..52871e3 100644 --- a/src/lib/libcdr_utils.h +++ b/src/lib/libcdr_utils.h @@ -91,6 +91,7 @@ void writeU16(librevenge::RVNGBinaryData &buffer, const int value); void writeU32(librevenge::RVNGBinaryData &buffer, const int value); void appendCharacters(librevenge::RVNGString &text, std::vector<unsigned char> characters, unsigned short charset); void appendCharacters(librevenge::RVNGString &text, std::vector<unsigned char> characters); +void appendUTF8Characters(librevenge::RVNGString &text, std::vector<unsigned char> characters); #ifdef DEBUG const char *toFourCC(unsigned value, bool bigEndian=false); |