我有一个 windows 1251 编码的字符串,需要转换为十六进制或二进制(但如果我设法将其转换为两者之一,我将能够将其转换为另一个)。该字符串来自收银机,因此我对初始编码无能为力。
到目前为止,我已尝试将其转换为 UTF-8,然后转换为 bin,然后转换为十六进制,但最后它是不正确的。字符串为“Ђ ЂЂ„‚”,十六进制为 80 20 80 80 84 82,二进制为 10000000 10100000 10000000 10000000 10000100 10000010
我认为我的第一个问题是 win-1251 到 utf-8 的对话。
$decodedUtf8 = mb_convert_encoding($decoded, "utf-8", "windows-1251");
结果是'Ђ ЂЂ„‚' -> 'Ђ ЂЂ„‚',我对编码没有经验,但这个看起来很可疑。
到目前为止,我的整个代码是:
public function decodeStatus($encodedStr){
$decoded = base64_decode($encodedStr);
//$iconverted = iconv('cp1251', 'utf-8', $decoded);
$decodedUtf8 = mb_convert_encoding($decoded, "utf-8", "windows-1251");
echo $decodedUtf8;
$chars = str_split($decodedUtf8);
foreach ($chars as $char){
$bits[] = decbin(ord($char));
}
return $bits;
}
最终数组应包含 6 个元素,如下所示:
[
1000000,
10100000,
10000000,
10000000,
10000100,
10000010
]
有没有办法只用 PHP 转换它?你能给我一些指导吗?