diff --git a/core/fxcrt/xml/cfx_xmlparser.cpp b/core/fxcrt/xml/cfx_xmlparser.cpp
index 09ae64e..21bbbbe 100644
--- a/core/fxcrt/xml/cfx_xmlparser.cpp
+++ b/core/fxcrt/xml/cfx_xmlparser.cpp
@@ -661,26 +661,17 @@
     if (iLen > 0) {
       if (csEntity[0] == L'#') {
         uint32_t ch = 0;
-        wchar_t w;
         if (iLen > 1 && csEntity[1] == L'x') {
           for (int32_t i = 2; i < iLen; i++) {
-            w = csEntity[i];
-            if (std::iswdigit(w))
-              ch = (ch << 4) + w - L'0';
-            else if (w >= L'A' && w <= L'F')
-              ch = (ch << 4) + w - 55;
-            else if (w >= L'a' && w <= L'f')
-              ch = (ch << 4) + w - 87;
-            else
+            if (!FXSYS_isHexDigit(csEntity[i]))
               break;
+            ch = (ch << 4) + FXSYS_HexCharToInt(csEntity[i]);
           }
         } else {
           for (int32_t i = 1; i < iLen; i++) {
-            w = csEntity[i];
-            if (!std::iswdigit(w))
+            if (!FXSYS_isDecimalDigit(csEntity[i]))
               break;
-
-            ch = ch * 10 + w - L'0';
+            ch = ch * 10 + FXSYS_DecimalCharToInt(csEntity[i]);
           }
         }
         if (ch > kMaxCharRange)
diff --git a/core/fxcrt/xml/cfx_xmlparser_unittest.cpp b/core/fxcrt/xml/cfx_xmlparser_unittest.cpp
index badac2c..0b51c6b 100644
--- a/core/fxcrt/xml/cfx_xmlparser_unittest.cpp
+++ b/core/fxcrt/xml/cfx_xmlparser_unittest.cpp
@@ -429,11 +429,18 @@
 TEST(CFX_XMLParserTest, Entities) {
   const char* input =
       "<script contentType=\"application/x-javascript\">"
-      "&#66;"
-      "&#x54;"
-      "&#x00000000000000000048;"
-      "&#x0000000000000000AB48;"
+      "&#66;"                     // B
+      "&#x54;"                    // T
+      "&#x6a;"                    // j
+      "&#x00000000000000000048;"  // H
+      "&#x0000000000000000AB48;"  // \xab48
       "&#x0000000000000000000;"
+      "&amp;"
+      "&lt;"
+      "&gt;"
+      "&apos;"
+      "&quot;"
+      "&something_else;"
       "</script>";
 
   auto stream = MakeProxy(input);
@@ -451,7 +458,7 @@
 
   ASSERT_EQ(FX_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse());
   ASSERT_EQ(FX_XmlSyntaxResult::Text, parser.DoSyntaxParse());
-  ASSERT_EQ(L"BTH\xab48", parser.GetTextData());
+  ASSERT_EQ(L"BTjH\xab48&<>'\"", parser.GetTextData());
 
   ASSERT_EQ(FX_XmlSyntaxResult::ElementClose, parser.DoSyntaxParse());
   ASSERT_EQ(L"script", parser.GetTextData());
