将 utf8 字符转换为 iso-88591 并在 PHP 中返回

2021-12-27 00:00:00 utf-8 encoding php iso-8859-1

我的一些脚本使用了不同的编码,当我尝试将它们组合起来时,这已经成为一个问题.

Some of my script are using different encoding, and when I try to combine them, this has becom an issue.

但我不能改变他们使用的编码,相反我想改变脚本 A 结果的编码,并将其用作脚本 B 中的参数.

But I can't change the encoding they use, instead I want to change the encodig of the result from script A, and use it as parameter in script B.

那么:有没有什么简单的方法可以在 PHP 中将字符串从 UTF-8 更改为 ISO-88591?我看过 utf_encode 和 _decode,但它们没有做我想要的.为什么不存在任何utf2iso()"函数或类似函数?

So: is there any simple way to change a string from UTF-8 to ISO-88591 in PHP? I have looked at utf_encode and _decode, but they doesn't do what i want. Why doesn't there exsist any "utf2iso()"-function, or similar?

我不认为我有不能以 ISO 格式写入的字符,所以这应该不是一个大问题.

I don't think I have characters that can't be written in ISO-format, so that shouldn't be an huge issue.

推荐答案

看看 iconv()mb_convert_encoding().顺便说一句:为什么不 utf8_encode()utf8_decode() 对你有用吗?

Have a look at iconv() or mb_convert_encoding(). Just by the way: why don't utf8_encode() and utf8_decode() work for you?

utf8_decode — 将字符串转换为ISO-8859-1 字符编码为UTF-8 到单字节 ISO-8859-1

utf8_decode — Converts a string with ISO-8859-1 characters encoded with UTF-8 to single-byte ISO-8859-1

utf8_encode — 编码 ISO-8859-1字符串转 UTF-8

utf8_encode — Encodes an ISO-8859-1 string to UTF-8

本质上

$utf8 = 'ÄÖÜ'; // file must be UTF-8 encoded
$iso88591_1 = utf8_decode($utf8);
$iso88591_2 = iconv('UTF-8', 'ISO-8859-1', $utf8);
$iso88591_2 = mb_convert_encoding($utf8, 'ISO-8859-1', 'UTF-8');

$iso88591 = 'ÄÖÜ'; // file must be ISO-8859-1 encoded
$utf8_1 = utf8_encode($iso88591);
$utf8_2 = iconv('ISO-8859-1', 'UTF-8', $iso88591);
$utf8_2 = mb_convert_encoding($iso88591, 'UTF-8', 'ISO-8859-1');

所有人都应该这样做 - utf8_en/decode() 不需要特殊扩展,mb_convert_encoding() 需要 ext/mbstring 和 iconv() 需要 ext/iconv.

all should do the same - with utf8_en/decode() requiring no special extension, mb_convert_encoding() requiring ext/mbstring and iconv() requiring ext/iconv.

相关文章