假设我想通过 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 函数。
我似乎找不到函数 f
和 g
所需的内容。
对于 f
,尝试通过多种函数进行转义和编码,例如作为 HTML 编码的 UTF-8:%EC%AA%BC
。对于g
,尝试了各种转义和解码函数,例如html_entity_decode
、utf_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/