有没有办法在PHP中获得MySQL表定义的编码?

时间:2010-05-27 08:36:08

标签: php mysql encoding

我看到我可以使用函数mysql_client_encoding(...)在PHP中获取MySQL数据库定义的编码,但是否有办法在PHP中获取MySQL表定义的编码?

3 个答案:

答案 0 :(得分:0)

我正在使用SHOW CREATE TABLE查询,但从不使用PHP 因为我无法想象我是否需要从PHP运行它。 SET NAMES可以提供任何可能的案例。

请注意,mysql_client_encoding()不返回数据库编码。这是客户端编码,正如它所说的

答案 1 :(得分:0)

据我所知,编码是在MySQL中基于每个数据库定义的,而不是每个表。

答案 2 :(得分:0)

我认为没有简单的方法来检索此信息。我能做的最好就是做一个“SHOW CREATE TABLE”并解析答案:

<?php

$link = mysql_connect('localhost', 'account', 'passwd');
mysql_select_db('my_base');

$q = mysql_query('show create table my_table;');
$row = mysql_fetch_assoc($q);

preg_match("/CHARSET=(.*)/", $row['Create Table'], $matched);
echo "Table was created with charset " . $matched[1];

这给了我:

Table was created with charset utf8

请注意,如果您的表格未使用此信息创建,则可能不会出现字符集。