gpt4 book ai didi

php mb_convert_encoding 函数从 ASCII 到 latin-1 不起作用

转载 作者:行者123 更新时间:2023-12-04 16:07:27 29 4
gpt4 key购买 nike

        //reencoding string from UTF-8 to Latin1
echo mb_detect_encoding($out);
$out = mb_convert_encoding($out, mb_detect_encoding($out),"ISO-8859-1");
echo mb_detect_encoding($out);
die;

我页面上打印的结果是:

ASCIIASCII

我已经检查了可能支持的编码 ( http://php.net/manual/fr/mbstring.supported-encodings.php ) Latin-1 被称为 ISO-8859-1。但是什么都没有改变...

---[编辑]---

这是我在 mb_detect_encoding() 之前打印 $out 时得到的结果;我的字符串是正确的。也许它可能是一个 php.ini 配置搞砸了?我无法更改它...

EDI_DC40 0000000000027262 2 SALESORDER_CREATEFROMDAT201 SALESORDER_CREATEFROMDAT2 330SOL 96A ORDERSTDX4 LS SERVEURDPL SAPP48 LS SERVEURDPL 1 E2SALESORDER_CREATEFROMDAT2 X E2BPSDHD1000 00000000000272621 YPR 4803 330 0230 20151002 20151002Z300 7134012207 71 20151002 20151002 E2BPSDITM000 00000000000272622 1 L7820100 9 E2BPSDITM000 00000000000272623 2 L7820400 6 E2BPSDITM000 00000000000272624 3 L9188000 5 E2BPPARNR000 00000000000272625 AG0000510001 E2BPPARNR000 00000000000272626 WE0000510001 E2BPPARNR000 00000000000272627 LQ0000030590 E2BPPARNR000 00000000000272628 ZQ0000990238 E2BPSCHDL000 00000000000272629 1 9 E2BPSCHDL000 000000000002726210 2 6 E2BPSCHDL000 000000000002726211 3 5 E2BPSDTEXT000 000000000002726212 FR E2BPPAREX000 000000000002726213 BAPE_VBAK LX2 E2BPPAREX000 000000000002726214 BAPE_VBAKX X

ASCII码字符

[编辑2]

要使我的文件以 ISO-8851-1 编码,我仍然遇到一些问题。我只是在生成文件之前添加了 $out = utf8_decode($out); :

    $strFileWrite    =  fopen($filePath, "w");
$strWritableFile = fwrite($strFileWrite, $out);
fclose($strFileWrite);

当我在 $out 变量的末尾添加“Ô”时,该文件被识别为 latin-1,并且 ô 被正确打印。当我将它添加到我的文件中间时,文档被识别为 utf8 并且字符“ô”打印得很差 (� )

最佳答案

如所写here :

Strings have no actual associated encoding, they're merely byte arrays. mb_detect_encoding doesn't tell you what encoding the string has, it merely tries to detect it. That means it takes a few guesses (your second argument) and tells you the first that is valid.

如果您的原始字符串是 ASCII,它也已经是有效的 Latin-1、UTF-8 和一大堆其他编码,它们都是 ASCII 的超集。转换它实际上不会改变任何东西。 mb_detect_encoding 最好将其检测为 ASCII,因为它是第一个有效匹配项,而且它与几乎任何其他答案一样有效。

如果您需要 Latin-1 并且想要确认您的字符串在 Latin-1 编码中有效,请使用 mb_check_encoding($str, 'ISO-8859-1') .

也许从这里开始阅读以了解更多信息:What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text

关于php mb_convert_encoding 函数从 ASCII 到 latin-1 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32943694/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com