从URL到PHP再到MySQL,如何编码和解码UTF-8?

从URL到PHP再到MySQL,如何编码和解码UTF-8?,php,mysql,encoding,utf-8,Php,Mysql,Encoding,Utf 8,假设我想发送Unicode glyphU+CABC쪼 通过要保存在数据库中的web服务 例如,wget用于连接到web服务: shell_exec(“wget”http://doit.com/testing.php?glyph=.f(0xCABC)。“”) 其中f是转换/编码/转义字形U+CABC的PHP函数 在testing.php中,通过$\u请求访问标志符号: $glyph=$\u请求['glyph']; 我想把它放在数据库中,所以让我们设置一个查询字符串,如下所示: $query='插入

假设我想发送Unicode glyphU+CABC쪼 通过要保存在数据库中的web服务

例如,
wget
用于连接到web服务:

shell_exec(“wget”http://doit.com/testing.php?glyph=.f(0xCABC)。“”)

其中
f
是转换/编码/转义字形U+CABC的PHP函数

在testing.php中,通过
$\u请求访问标志符号:

$glyph=$\u请求['glyph'];

我想把它放在数据库中,所以让我们设置一个查询字符串,如下所示:

$query='插入UTF8_表(UTF8_字段)值('.g($glyph)。');

其中
g
是将glyph转换为MySQL兼容表示的PHP函数

我似乎找不到功能
f
g
所需的内容

对于
f
,尝试通过多种功能进行转义和编码,例如HTML编码的UTF-8:
%EC%AA%BC
。对于
g
,尝试各种转义和解码功能,例如
HTML\u实体解码
UTF\u解码
,等等

但无论我如何编码,它总是被解释为一个由三个字符组成的字符串ì¼,然后作为ì¼(即六个字节)保存在数据库中,而不是作为쪼 (即三个字节)

我甚至还没有开始弄清楚如何通过SQL
SELECT
和encoding
JSON
返回glyph,但现在,我只想用一种简单的方法来处理从源到目标的UTF-8

$glyph = "쪼"; //or
$glyph = "\xEC\xAA\xBC";
这是用UTF-8编码的标志符号。如果用UTF-8保存源代码,则前者有效,后者在任何情况下都有效。要在URL中传输此标志符号,请对其进行URL编码:

$url = 'http://...?glyph=' . rawurlencode($glyph);
在服务器上,PHP将再次自动解码,因此:

$glyph = $_GET['glyph'];
然后,将其插入数据库,方法与任何其他UTF-8编码文本相同,主要是确保数据库连接编码设置正确。请参阅。

谢谢,set_charset()是缺少的键。已更改数据库,但未意识到它们使用的是latin1。奇怪的是,整个数据库、所有文本字段和排序规则都设置为UTF-8,但这需要额外的步骤!