mb_convert_variables.phpt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. --TEST--
  2. mb_convert_variables()
  3. --EXTENSIONS--
  4. mbstring
  5. --INI--
  6. output_handler=
  7. mbstring.language=Japanese
  8. --FILE--
  9. <?php
  10. // TODO: Add more tests
  11. //$debug = true; // Uncomment this line to view error/warning/notice message in *.out file
  12. ini_set('include_path', __DIR__);
  13. include_once('common.inc');
  14. // SJIS string (BASE64 encoded)
  15. $sjis = base64_decode('k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==');
  16. // JIS string (BASE64 encoded)
  17. $jis = base64_decode('GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==');
  18. // EUC-JP string
  19. $euc_jp = '日本語テキストです。0123456789。';
  20. // Test for single scalar
  21. echo "== SCALAR TEST ==\n";
  22. $s = $sjis;
  23. $encoding = mb_convert_variables('EUC-JP', 'SJIS', $s);
  24. print("$encoding\n"); // SJIS
  25. print("$s\n"); // Converted to EUC-JP
  26. $s = $jis;
  27. $encoding = mb_convert_variables('EUC-JP', 'JIS', $s);
  28. print("$encoding\n"); // JIS
  29. print("$s\n"); // Converted to EUC-JP
  30. $s = $euc_jp;
  31. $encoding = mb_convert_variables('SJIS', 'EUC-JP', $s);
  32. print("$encoding\n"); // EUC-JP
  33. print(base64_encode($s)."\n"); // Converted to SJIS (base64 encoded)
  34. $s = $euc_jp;
  35. $encoding = mb_convert_variables('JIS', 'EUC-JP', $s);
  36. print("$encoding\n"); // EUC-JP
  37. print(base64_encode($s)."\n"); // Converted to JIS (base64 encoded)
  38. // Test for multiple slcaler
  39. $s1 = $euc_jp;
  40. $s2 = $euc_jp;
  41. $s3 = $euc_jp;
  42. $encoding = mb_convert_variables('EUC-JP', 'auto', $s1, $s2, $s3);
  43. print("$encoding\n"); // EUC-JP
  44. print("$s1$s2$s3\n"); // Converted to EUC-JP
  45. // Note: Mixing encoding in array/object is not supported?
  46. // Test for array
  47. echo "== ARRAY TEST ==\n";
  48. $a = array($s3, $s2, $s1);
  49. $aa = $a;
  50. $encoding = mb_convert_variables('EUC-JP', 'auto', $aa);
  51. print("$encoding\n"); // EUC-JP
  52. print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP
  53. $a = array($s1, $s2, $s3);
  54. $aa = $a;
  55. $encoding = mb_convert_variables('EUC-JP', 'auto', $aa);
  56. print("$encoding\n"); // EUC-JP
  57. print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP
  58. // Test for object
  59. echo "== OBJECT TEST ==\n";
  60. class foo
  61. {
  62. public $s1;
  63. public $s2;
  64. public $s3;
  65. function __construct()
  66. {
  67. global $sjis, $jis, $euc_jp;
  68. $this->s1 = $euc_jp;
  69. $this->s2 = $euc_jp;
  70. $this->s3 = $euc_jp;
  71. }
  72. }
  73. class bar
  74. {
  75. public $s1;
  76. public $s2;
  77. public $s3;
  78. function __construct()
  79. {
  80. global $sjis, $jis, $euc_jp;
  81. $this->s1 = $euc_jp;
  82. $this->s2 = $euc_jp;
  83. $this->s3 = $euc_jp;
  84. }
  85. }
  86. $o = new foo;
  87. $oo = $o;
  88. $encoding = mb_convert_variables('EUC-JP', 'auto', $oo);
  89. print("$encoding\n"); // EUC-JP
  90. print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP
  91. $o = new bar;
  92. $oo = $o;
  93. $encoding = mb_convert_variables('EUC-JP', 'auto', $oo);
  94. print("$encoding\n"); // EUC-JP
  95. print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP
  96. // Test for scalar, array and object
  97. echo "== SCALAR, ARRAY AND OBJECT TEST ==\n";
  98. $s1 = $euc_jp;
  99. $s2 = $euc_jp;
  100. $s3 = $euc_jp;
  101. $aa = $a;
  102. $oo = $o;
  103. $encoding = mb_convert_variables('EUC-JP', 'auto', $s1, $s2, $s3, $aa, $oo);
  104. print("$encoding\n"); // EUC-JP
  105. print("$s1$s2$s3\n"); // Converted to EUC-JP
  106. print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP
  107. print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP
  108. ?>
  109. --EXPECT--
  110. == SCALAR TEST ==
  111. SJIS
  112. 日本語テキストです。0123456789。
  113. JIS
  114. 日本語テキストです。0123456789。
  115. EUC-JP
  116. k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==
  117. EUC-JP
  118. GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==
  119. EUC-JP
  120. 日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。
  121. == ARRAY TEST ==
  122. EUC-JP
  123. 日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。
  124. EUC-JP
  125. 日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。
  126. == OBJECT TEST ==
  127. EUC-JP
  128. 日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。
  129. EUC-JP
  130. 日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。
  131. == SCALAR, ARRAY AND OBJECT TEST ==
  132. EUC-JP
  133. 日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。
  134. 日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。
  135. 日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。