我试图断言一个函数,其中mycode将Windows-1252
代码转换为UTF-8
示例如下:
function test($article){
$result = mb_convert_encoding($article[0]['Description'], "UTF-8", "Windows-1252");
retrun $result;
}
我正在尝试输入Windows-1252
并声明其更改,但它无效。
我的第一名:
$convertedArray = array(array('Description' => "an example pain— if you’re"));
$someString = $this->getMockBuilder('\Client')
->setMethods(['getArticle'])
->getMock();
$someString->expects($this->once())
->method('getArticle')
->with('12345')
->will($this->returnValue($convertedArray));
\client::set($someString);
或者
简单地说:我试图输入 $ str =“示例痛苦”,如果你是“并期望函数将其转换为UTF-8并返回”一个例子的痛苦 - 如果你“我该怎么做?
我收到以下错误:
--- Expected
+++ Actual
@@ @@
Array (
- 'record' => 'an example pain— if you’re'
+ 'record' => 'an example pain� if you’re'
)
答案 0 :(得分:3)
如果要保证测试字符串的编码,请执行以下操作:
$test_1252 = mb_convert_encoding($test_utf8, 'cp-1252', 'utf-8');
echo base64_encode($test_1252);
现在你有了一个字符串,你可以安全地复制/粘贴你想要的任何文件,同时保持其编码。
例如:
$test_utf8 = "an example pain— if you’re";
$test_1252 = mb_convert_encoding($test_utf8, 'cp1252', 'utf-8');
var_dump(
$test_utf8,
$test_1252,
bin2hex($test_utf8),
bin2hex($test_1252),
base64_encode($test_utf8),
base64_encode($test_1252)
);
输出:
string(30) "an example pain— if you’re"
string(26) "an example pain� if you�re"
string(60) "616e206578616d706c65207061696ee2809420696620796f75e280997265"
string(52) "616e206578616d706c65207061696e9720696620796f75927265"
string(40) "YW4gZXhhbXBsZSBwYWlu4oCUIGlmIHlvdeKAmXJl"
string(36) "YW4gZXhhbXBsZSBwYWlulyBpZiB5b3WScmU="
答案 1 :(得分:1)
很高兴我能帮忙!答案供参考:
不幸的是,您似乎更改了mb_convert_encoding()
函数的参数。
// Change this
$result = mb_convert_encoding($article[0]['Description'], "UTF-8", "Windows-1252");
// To this
$result = mb_convert_encoding($article[0]['Description'], "Windows-1252", "UTF-8");
查看您的预期工作代码[{3}}。