XML Feed数据中的字符无效

use*_*289 6 php xml utf-8 character-encoding

我有一个feed,我将数据从中提取到数据库中.它以XML格式提供数据.但是,数据包括"非法"字符.例如:

A GREAT NEIGHBOURHOOD – WITH A
Run Code Online (Sandbox Code Playgroud)

要么

large “country style†eat-in
Run Code Online (Sandbox Code Playgroud)

要么

Garage 14’x32’, large
Run Code Online (Sandbox Code Playgroud)

要么

 OR…….ENDLESS POSSIBILITIES!! 
Run Code Online (Sandbox Code Playgroud)

我的问题首先是,如何识别这些字符的编码,其次,如何更改编码以匹配我的数据库所需的UTF8格式?

编辑:要明确的是,此过程中没有涉及数据库(此时此过程中,无论如何).数据将在稍后插入到数据库中,但此刻我只是通过PHP脚本读取数据并使用在屏幕上打印var_dump.

编辑2:使用PHP PHRETS库从RETS提要中提取数据

osh*_*ell 7

问题是您的UTF-8响应以不同的方式处理或数据库未正确设置.这里有一些关于这可能发生的例子以及如何解决它的例子.

使用卷曲之前

header("Content-Type: text/html; charset=utf-8");
Run Code Online (Sandbox Code Playgroud)

Mysql(my.cnf)

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
Run Code Online (Sandbox Code Playgroud)

手动创建数据库时

CREATE DATABASE `your_table_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_polish_ci;
Run Code Online (Sandbox Code Playgroud)

使用Doctrine等框架时

$conn = array(
    'driver' => 'pdo_mysql',
    'dbname' => 'test',
    'user' => 'root',
    'password' => '*****',
    'charset' => 'utf8',
    'driverOptions' => array(1002=>'SET NAMES utf8')
);
Run Code Online (Sandbox Code Playgroud)