diff --git a/core/fxcrt/bytestring.h b/core/fxcrt/bytestring.h
index 2472385..99b87b1 100644
--- a/core/fxcrt/bytestring.h
+++ b/core/fxcrt/bytestring.h
@@ -87,9 +87,11 @@
   // Explicit conversion to span.
   // Note: Any subsequent modification of |this| will invalidate the result.
   pdfium::span<const char> AsSpan() const {
-    return m_pData ? pdfium::span<const char>(m_pData->m_String,
-                                              m_pData->m_nDataLength)
-                   : pdfium::span<const char>();
+    return pdfium::make_span(m_pData ? m_pData->m_String : nullptr,
+                             GetLength());
+  }
+  pdfium::span<const uint8_t> AsRawSpan() const {
+    return pdfium::make_span(raw_str(), GetLength());
   }
 
   // Note: Any subsequent modification of |this| will invalidate iterators.
diff --git a/core/fxcrt/bytestring_unittest.cpp b/core/fxcrt/bytestring_unittest.cpp
index d030535..ed3f375 100644
--- a/core/fxcrt/bytestring_unittest.cpp
+++ b/core/fxcrt/bytestring_unittest.cpp
@@ -27,6 +27,10 @@
   EXPECT_EQ(3u, abc_span.size());
   EXPECT_EQ(0, memcmp(abc_span.data(), "abc", 3));
 
+  pdfium::span<const uint8_t> abc_raw_span = abc.AsRawSpan();
+  EXPECT_EQ(3u, abc_raw_span.size());
+  EXPECT_EQ(0, memcmp(abc_raw_span.data(), "abc", 3));
+
   ByteString mutable_abc = abc;
   EXPECT_EQ(abc.c_str(), mutable_abc.c_str());
   EXPECT_EQ('a', mutable_abc[0]);
@@ -1527,8 +1531,21 @@
   ByteString empty_str;
   EXPECT_TRUE(empty_str.IsEmpty());
   EXPECT_EQ(0u, empty_str.GetLength());
+
   const char* cstr = empty_str.c_str();
+  EXPECT_NE(nullptr, cstr);
   EXPECT_EQ(0u, strlen(cstr));
+
+  const uint8_t* rstr = empty_str.raw_str();
+  EXPECT_EQ(nullptr, rstr);
+
+  pdfium::span<const char> cspan = empty_str.AsSpan();
+  EXPECT_TRUE(cspan.empty());
+  EXPECT_EQ(nullptr, cspan.data());
+
+  pdfium::span<const uint8_t> rspan = empty_str.AsRawSpan();
+  EXPECT_TRUE(rspan.empty());
+  EXPECT_EQ(nullptr, rspan.data());
 }
 
 TEST(ByteString, InitializerList) {
diff --git a/core/fxcrt/widestring.h b/core/fxcrt/widestring.h
index b668b02..4b097c4 100644
--- a/core/fxcrt/widestring.h
+++ b/core/fxcrt/widestring.h
@@ -82,9 +82,8 @@
   // Explicit conversion to span.
   // Note: Any subsequent modification of |this| will invalidate the result.
   pdfium::span<const wchar_t> AsSpan() const {
-    return m_pData ? pdfium::span<const wchar_t>(m_pData->m_String,
-                                                 m_pData->m_nDataLength)
-                   : pdfium::span<const wchar_t>();
+    return pdfium::make_span(m_pData ? m_pData->m_String : nullptr,
+                             GetLength());
   }
 
   // Note: Any subsequent modification of |this| will invalidate iterators.
diff --git a/core/fxcrt/widestring_unittest.cpp b/core/fxcrt/widestring_unittest.cpp
index ec0a55f..4572305 100644
--- a/core/fxcrt/widestring_unittest.cpp
+++ b/core/fxcrt/widestring_unittest.cpp
@@ -1353,8 +1353,14 @@
   WideString empty_str;
   EXPECT_TRUE(empty_str.IsEmpty());
   EXPECT_EQ(0u, empty_str.GetLength());
+
   const wchar_t* cstr = empty_str.c_str();
+  EXPECT_NE(nullptr, cstr);
   EXPECT_EQ(0u, wcslen(cstr));
+
+  pdfium::span<const wchar_t> cspan = empty_str.AsSpan();
+  EXPECT_TRUE(cspan.empty());
+  EXPECT_EQ(nullptr, cspan.data());
 }
 
 TEST(CFX_WidString, InitializerList) {
