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

标签 php mysql encoding utf-8

假设我想通过 Web 服务发送 Unicode 字形 U+CABC 쪼 以保存在数据库中。

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

shell_exec("wget 'http://doit.com/testing.php?glyph=.f(0xCABC)."'")

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

在testing.php中,通过$_REQUEST访问字形:

$glyph = $_REQUEST['glyph'];

我想将它放入数据库中,所以让我们设置一个像这样的查询字符串:

$query = '插入 UTF8_TABLE (UTF8_FIELD) VALUES ('.g($glyph).')';

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

我似乎找不到函数 fg 所需的内容。

对于 f,尝试通过多种函数进行转义和编码,例如作为 HTML 编码的 UTF-8:%EC%AA%BC。对于g,尝试了各种转义和解码函数,例如html_entity_decodeutf_decode

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

我什至还没有开始弄清楚如何通过 SQL SELECT 返回字形并编码 JSON,但现在,只是想要一种简单的方法来处理从出发地到目的地的 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 编码文本一样,主要是确保数据库连接编码设置正确。请参阅UTF-8 all the way through .

关于php - 从URL到PHP再到MySQL,如何进行UTF-8编码和解码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20757998/

相关文章:

javascript - 如何使用 jquery 将行名称从 php 传递到 ajax

encoding - SMPP中 "data_coding"字段的含义

php - Windows 中使用 PHP 的应用程序线程

php - 双击word后,如何使用php或jquery将word插入数据库

php - where 子句中的 MYSQL 别名

php - 使用ajax填充2个输入

mysql - 如何修改现有表设置以自动递增 PK 字段?

mysql - Rails - 如何修复/转换不正确的字符串值?

Python字符串编码问题

javascript - 从服务器 json Angular 加载数据