当前位置: 首页 > 面试题库 >

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

贺正祥
2023-03-14
问题内容

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

但是我无法更改它们使用的编码,而是要更改脚本A的结果编码,并将其用作脚本B中的参数。

所以:有什么简单的方法可以在PHP中将字符串从UTF-8更改为ISO-88591?我看过utf_encode和_decode,但是他们没有做我想要的。为什么不存在任何“
utf2iso()”功能或类似功能?

我认为我的字符无法以ISO格式编写,因此这不是一个大问题。


问题答案:

看看iconv()mb_convert_encoding()。只是顺便:为什么不utf8_encode()utf8_decode()为你工作?

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

utf8_encode —将ISO-8859-1字符串编码为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。



 类似资料:
  • 问题内容: 我想将ArrayList保存到SharedPreferences,因此需要将其转换为字符串然后返回,这就是我正在做的事情: 我可以用它来检索它,但我不知道如何将arrayString转换回ArrayList。如何做呢? 我的数组看起来像: 问题答案: 您有2个选择: 手动解析字符串并重新创建arraylist。这将是非常乏味的。 使用Google的Gson库之类的JSON库,以JSON

  • 问题内容: 我正在编写一个将数据存储在字典对象中的程序,但是该数据需要在程序执行过程中的某个时候保存,并在再次运行该程序时重新加载到字典对象中。我如何将字典对象转换为可以写入文件并再加载回字典对象的字符串?希望这将支持包含词典的词典。 问题答案: json模块是一个很好的解决方案。与pickle相比,它的优势在于它仅生成纯文本输出,并且是跨平台和跨版本的。

  • 问题内容: 直到今天,我才意识到我的PHP脚本中缺少此功能: 我所有的表都是InnoDB,归类为“ utf8_unicode_ci”,我所有的VARCHAR列也均为“ utf8_unicode_ci”。我有我的PHP脚本,和我所有的PHP文件编码为UTF-8。 因此,直到现在,每次我用变音符号“插入”某些东西时,例如: 在这种情况下,“名称”内容为:。 由于我固定了PHP和MySQL之间的字符集,

  • 问题内容: 为了转换字符串,我将其转换为字节,如下所示: 为了转换,我做了:显然不起作用。我将如何转换回去? 问题答案: 您原来的城市名称中有哪些字符?尝试这样的UTF-8版本:

  • 问题内容: 我有一个FTP客户端类,它返回指向该文件的InputStream。我想用BufferedReader逐行读取文件。问题是,客户端以二进制模式返回文件,并且文件具有ISO-8859-15编码。 问题答案: 如果文件/流/任何内容真正包含ISO-8859-15编码的文本,则只需在创建InputStreamReader时指定它: 然后,将以Java的本机编码(为UTF-16,而不是UTF-8

  • 问题内容: 我能够从发送消息到上。如果我从发送消息,则使用任何可访问性(包括完整的语言本地化)都没有区别;英语也没有问题。正确的编码很重要,只有以下代码行: 不幸的是,这是无效的。我要从中获取消息的情况有所不同。 在我得到消息的情况下,从Windows操作系统(英语,没有任何语言包),我能够把消息来自于形式。 如果Windows操作系统使用某些语言包进行了完全本地化,则我将收到一个例外 消息缓冲区