diff options
author | Tom Sepez <tsepez@chromium.org> | 2018-08-08 17:49:02 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-08-08 17:49:02 +0000 |
commit | 34dab07ed6e826666fd0589069f2c9b5bd2ba4dc (patch) | |
tree | 0eb30bd1c76f54890a6d365258a7157ae9972748 /fxbarcode | |
parent | 6d9897b103aef10b369eb999a40c22011a8ae4f5 (diff) | |
download | pdfium-34dab07ed6e826666fd0589069f2c9b5bd2ba4dc.tar.xz |
Move ByteString::FromUnicode() to WideString::ToDefANSI()
Turns out that "FromUnicode" is misleading in that, on linux, it simply
removes any characters beyond 0xFF and passes the rest unchanged, so
no unicode decoding actually takes place. On Windows, it passes it into
the system function specifying FX_CODEPAGE_DefANSI, converting it into
the so-called "default ANSI code plane", passing some characters,
converting others to '?' and still others to 'A'. Either way, nothing
resembling UTF8 comes out of this, so pick a better name.
These now immediately look suspicious, so a follow-up CL will see
which ones should really be WideString::UTF8Encode() instead.
Making this a normal method on a widestring rather than a static
method on a bytestring feels more natural; this is parallel to
the UTF8Encode and UTF16LE_Encode functions.
Add a test that shows these conversions.
Change-Id: Ia7551b47199eba61b5c328a97bfe9176ac8e583c
Reviewed-on: https://pdfium-review.googlesource.com/39690
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'fxbarcode')
-rw-r--r-- | fxbarcode/BC_UtilCodingConvert.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/fxbarcode/BC_UtilCodingConvert.cpp b/fxbarcode/BC_UtilCodingConvert.cpp index 77c52f2074..96aeaddb7c 100644 --- a/fxbarcode/BC_UtilCodingConvert.cpp +++ b/fxbarcode/BC_UtilCodingConvert.cpp @@ -12,7 +12,7 @@ CBC_UtilCodingConvert::~CBC_UtilCodingConvert() {} void CBC_UtilCodingConvert::UnicodeToLocale(const WideString& src, ByteString& dst) { - dst = ByteString::FromUnicode(src); + dst = src.ToDefANSI(); } void CBC_UtilCodingConvert::LocaleToUtf8(const ByteString& src, @@ -34,15 +34,13 @@ void CBC_UtilCodingConvert::Utf8ToLocale(const std::vector<uint8_t>& src, for (uint8_t value : src) utf8 += value; - WideString unicode = WideString::FromUTF8(utf8.AsStringView()); - dst = ByteString::FromUnicode(unicode); + dst = WideString::FromUTF8(utf8.AsStringView()).ToDefANSI(); } void CBC_UtilCodingConvert::Utf8ToLocale(const uint8_t* src, int32_t count, ByteString& dst) { - WideString unicode = WideString::FromUTF8(ByteStringView(src, count)); - dst = ByteString::FromUnicode(unicode); + dst = WideString::FromUTF8(ByteStringView(src, count)).ToDefANSI(); } void CBC_UtilCodingConvert::UnicodeToUTF8(const WideString& src, |