mb_convert_encoding.phpt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. --TEST--
  2. mb_convert_encoding()
  3. --EXTENSIONS--
  4. mbstring
  5. --INI--
  6. output_handler=
  7. mbstring.language=Japanese
  8. --FILE--
  9. <?php
  10. // TODO: Add more tests
  11. $sjis = base64_decode('k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==');
  12. $jis = base64_decode('GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==');
  13. $euc_jp = "\xC6\xFC\xCB\xDC\xB8\xEC\xA5\xC6\xA5\xAD\xA5\xB9\xA5\xC8\xA4\xC7\xA4\xB9\xA1\xA301234\xA3\xB5\xA3\xB6\xA3\xB7\xA3\xB8\xA3\xB9\xA1\xA3";
  14. // Test with single "form encoding"
  15. echo "== BASIC TEST ==\n";
  16. $s = bin2hex(mb_convert_encoding($sjis, 'EUC-JP', 'SJIS'));
  17. print("EUC-JP: $s\n"); // EUC-JP
  18. $s = bin2hex(mb_convert_encoding($jis, 'EUC-JP', 'JIS'));
  19. print("EUC-JP: $s\n"); // EUC-JP
  20. $s = mb_convert_encoding($euc_jp, 'SJIS', 'EUC-JP');
  21. print("SJIS: ".base64_encode($s)."\n"); // SJIS
  22. $s = mb_convert_encoding($euc_jp, 'JIS', 'EUC-JP');
  23. print("JIS: ".base64_encode($s)."\n"); // JIS
  24. // Using Encoding List Array
  25. echo "== STRING ENCODING LIST ==\n";
  26. $a = 'JIS,UTF-8,EUC-JP,SJIS';
  27. $s = $jis;
  28. $s = bin2hex(mb_convert_encoding($s, 'EUC-JP', $a));
  29. print("EUC-JP: $s\n"); // EUC-JP
  30. $s = $euc_jp;
  31. $s = mb_convert_encoding($s, 'SJIS', $a);
  32. print("SJIS: ".base64_encode($s)."\n"); // SJIS
  33. $s = $euc_jp;
  34. $s = mb_convert_encoding($s, 'JIS', $a);
  35. print("JIS: ".base64_encode($s)."\n"); // JIS
  36. // Using Encoding List Array
  37. echo "== ARRAY ENCODING LIST ==\n";
  38. $a = ['JIS', 'UTF-8', 'EUC-JP', 'SJIS'];
  39. $s = $jis;
  40. $s = bin2hex(mb_convert_encoding($s, 'EUC-JP', $a));
  41. print("EUC-JP: $s\n"); // EUC-JP
  42. $s = $euc_jp;
  43. $s = mb_convert_encoding($s, 'SJIS', $a);
  44. print("SJIS: ".base64_encode($s)."\n"); // SJIS
  45. $s = $euc_jp;
  46. $s = mb_convert_encoding($s, 'JIS', $a);
  47. print("JIS: ".base64_encode($s)."\n"); // JIS
  48. // Regression test for bug #81676
  49. echo "UTF-8: " . mb_convert_encoding('test', 'UTF-8', mb_list_encodings()), "\n";
  50. // Using Detect Order
  51. echo "== DETECT ORDER ==\n";
  52. $s = $jis;
  53. $s = bin2hex(mb_convert_encoding($s, 'EUC-JP', 'auto'));
  54. print("EUC-JP: $s\n"); // EUC-JP
  55. $s = $euc_jp;
  56. $s = mb_convert_encoding($s, 'SJIS', 'auto');
  57. print("SJIS: ".base64_encode($s)."\n"); // SJIS
  58. $s = $euc_jp;
  59. $s = mb_convert_encoding($s, 'JIS', 'auto');
  60. print("JIS: ".base64_encode($s)."\n"); // JIS
  61. // Invalid Parameters
  62. echo "== INVALID PARAMETER ==\n";
  63. $s = mb_convert_encoding(1234, 'EUC-JP');
  64. print("INT: $s\n");
  65. $s = mb_convert_encoding('', 'EUC-JP');
  66. print("EUC-JP: $s\n"); // SJIS
  67. $s = $euc_jp;
  68. try {
  69. var_dump(mb_convert_encoding($s, 'BAD'));
  70. } catch (\ValueError $e) {
  71. echo $e->getMessage() . \PHP_EOL;
  72. }
  73. ?>
  74. --EXPECT--
  75. == BASIC TEST ==
  76. EUC-JP: c6fccbdcb8eca5c6a5ada5b9a5c8a4c7a4b9a1a33031323334a3b5a3b6a3b7a3b8a3b9a1a3
  77. EUC-JP: c6fccbdcb8eca5c6a5ada5b9a5c8a4c7a4b9a1a33031323334a3b5a3b6a3b7a3b8a3b9a1a3
  78. SJIS: k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==
  79. JIS: GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==
  80. == STRING ENCODING LIST ==
  81. EUC-JP: c6fccbdcb8eca5c6a5ada5b9a5c8a4c7a4b9a1a33031323334a3b5a3b6a3b7a3b8a3b9a1a3
  82. SJIS: k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==
  83. JIS: GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==
  84. == ARRAY ENCODING LIST ==
  85. EUC-JP: c6fccbdcb8eca5c6a5ada5b9a5c8a4c7a4b9a1a33031323334a3b5a3b6a3b7a3b8a3b9a1a3
  86. SJIS: k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==
  87. JIS: GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==
  88. UTF-8: test
  89. == DETECT ORDER ==
  90. EUC-JP: c6fccbdcb8eca5c6a5ada5b9a5c8a4c7a4b9a1a33031323334a3b5a3b6a3b7a3b8a3b9a1a3
  91. SJIS: k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==
  92. JIS: GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==
  93. == INVALID PARAMETER ==
  94. INT: 1234
  95. EUC-JP:
  96. mb_convert_encoding(): Argument #2 ($to_encoding) must be a valid encoding, "BAD" given