如何在PHP中解码格式错误的字符串


How to decode malformed string in PHP

我有一个充满编码错误的数据库,我在试图反向查找原始数据时不知所措。

这是一个来自土耳其的地址样本。

M�¼ze M�¼d�¼rl�¼�Ÿ�¼
Konyalt�± Cad.
Muratpa�Ÿa
Antalya

更新

问题有两个方面。

  1. 原始latin1_swedish_ci表中已损坏的字符。即落在字符集之外的字符
  2. phpMyAdmin导出/导入过程中使用双重utf-8编码

后者的解决方案似乎是:

$str = str_replace('?', chr(194).chr(131), $str);
$str = utf8_decode(utf8_decode($str));

这并不能解决原始的损坏问题,即编码信息已经丢失,正如@cleaong

所建议的那样

我假设您的数据库是MySQL。你更新了编码并尝试了吗?首先检查您是否可以让它正确地显示在MySQL中。将编码/排序规则设置为UTF-8,使用phpmyadmin或MySQL CLI进行查询并检查其外观。