diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp
index 802aaf6..986b0e3 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp
@@ -35,9 +35,9 @@
     typedef std::wstring_convert<Codecvt> Myconv;
     Myconv myconv;
     assert(myconv.converted() == 0);
-    std::string bs = myconv.to_bytes(L"\x1005");
+    std::string bs = myconv.to_bytes(L"\u1005");
     assert(myconv.converted() == 1);
-    bs = myconv.to_bytes(L"\x1005\x65");
+    bs = myconv.to_bytes(L"\u1005e");
     assert(myconv.converted() == 2);
     std::wstring ws = myconv.from_bytes("\xE1\x80\x85");
     assert(myconv.converted() == 3);
@@ -52,15 +52,16 @@
     typedef std::wstring_convert<Codecvt> Myconv;
     Myconv myconv;
     assert(myconv.converted() == 0);
-    std::string bs = myconv.to_bytes(L"\x40003");
+    std::string bs = myconv.to_bytes(L"\U00040003");
     assert(myconv.converted() == 1);
-    bs = myconv.to_bytes(L"\x40003\x65");
+    bs = myconv.to_bytes(L"\U00040003e");
     assert(myconv.converted() == 2);
     std::wstring ws = myconv.from_bytes("\xF1\x80\x80\x83");
     assert(myconv.converted() == 4);
   }
 }
 
-int main(int, char**) { TestHelper<wchar_t>::test(); 
+int main(int, char**) {
+  TestHelper<wchar_t>::test();
   return 0;
 }
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp
index c1a26d0..c02f82b 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp
@@ -35,15 +35,15 @@
   static_assert((std::is_same<CharT, wchar_t>::value), "");
   {
     std::wstring_convert<std::codecvt_utf8<CharT> > myconv;
-    std::string bs("\xE1\x80\x85\x00");
+    std::string bs("\xE1\x80\x85");
     std::wstring ws = myconv.from_bytes('a');
     assert(ws == L"a");
     ws = myconv.from_bytes(bs.c_str());
-    assert(ws == L"\x1005");
+    assert(ws == L"\u1005");
     ws = myconv.from_bytes(bs);
-    assert(ws == L"\x1005");
+    assert(ws == L"\u1005");
     ws = myconv.from_bytes(bs.data(), bs.data() + bs.size());
-    assert(ws == L"\x1005");
+    assert(ws == L"\u1005");
     ws = myconv.from_bytes("");
     assert(ws.size() == 0);
   }
@@ -58,16 +58,17 @@
     std::wstring ws = myconv.from_bytes('a');
     assert(ws == L"a");
     ws = myconv.from_bytes(bs.c_str());
-    assert(ws == L"\x40003");
+    assert(ws == L"\U00040003");
     ws = myconv.from_bytes(bs);
-    assert(ws == L"\x40003");
+    assert(ws == L"\U00040003");
     ws = myconv.from_bytes(bs.data(), bs.data() + bs.size());
-    assert(ws == L"\x40003");
+    assert(ws == L"\U00040003");
     ws = myconv.from_bytes("");
     assert(ws.size() == 0);
   }
 }
 
-int main(int, char**) { TestHelper<wchar_t>::test(); 
+int main(int, char**) {
+  TestHelper<wchar_t>::test();
   return 0;
 }
diff --git a/test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp b/test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp
index 397ba64..3736e4d 100644
--- a/test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp
+++ b/test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp
@@ -35,15 +35,15 @@
   static_assert((std::is_same<CharT, wchar_t>::value), "");
   {
     std::wstring_convert<std::codecvt_utf8<CharT> > myconv;
-    std::wstring ws(1, CharT(0x1005));
+    std::wstring ws(1, L'\u1005');
     std::string bs = myconv.to_bytes(ws[0]);
-    assert(bs == "\xE1\x80\x85\x00");
+    assert(bs == "\xE1\x80\x85");
     bs = myconv.to_bytes(ws.c_str());
-    assert(bs == "\xE1\x80\x85\x00");
+    assert(bs == "\xE1\x80\x85");
     bs = myconv.to_bytes(ws);
-    assert(bs == "\xE1\x80\x85\x00");
+    assert(bs == "\xE1\x80\x85");
     bs = myconv.to_bytes(ws.data(), ws.data() + ws.size());
-    assert(bs == "\xE1\x80\x85\x00");
+    assert(bs == "\xE1\x80\x85");
     bs = myconv.to_bytes(L"");
     assert(bs.size() == 0);
   }
@@ -54,7 +54,7 @@
   static_assert((std::is_same<CharT, wchar_t>::value), "");
   {
     std::wstring_convert<std::codecvt_utf8<CharT> > myconv;
-    std::wstring ws(1, CharT(0x40003));
+    std::wstring ws(1, *L"\U00040003");
     std::string bs = myconv.to_bytes(ws[0]);
     assert(bs == "\xF1\x80\x80\x83");
     bs = myconv.to_bytes(ws.c_str());
@@ -68,6 +68,7 @@
   }
 }
 
-int main(int, char**) { TestHelper<wchar_t>::test(); 
+int main(int, char**) {
+  TestHelper<wchar_t>::test();
   return 0;
 }
