首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件导入sql语句时的编码问题

从文件导入sql语句时的编码问题
EN

Stack Overflow用户
提问于 2014-10-14 10:32:00
回答 2查看 418关注 0票数 1

当我试图执行存储在文件中的sql语句时,遇到了一个问题。问题是,像纳奥这样的特殊字符被导入数据库时会变成胡言乱语。

我使用以下代码:

代码语言:javascript
复制
$dsn = 'mysql:host='.DBHOST.';dbname='.DBBASE;
$db = new PDO($dsn, DBUSER, DBPASS);
//$db->exec("set names 'utf8'");

$sql = "TRUNCATE TABLE wtm_meta_language";
$db->exec($sql);

$sql = file_get_contents('language.sql');

$db->exec($sql);

language.sql文件是用UTF-8编码的,数据库也是如此。我试图通过在代码中添加"set name 'utf8'“来强制数据库连接使用utf-8 (第3行,即现在的注释),但是当我添加该行时,什么都不会被导入。

我希望有人有办法解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-15 06:59:04

您的结果没有被检索,因为您没有添加charset=utf8。

代码语言:javascript
复制
$db = new PDO('mysql:host='.DBHOST.';dbname='.DBBASE.';charset=utf8', 'username', 'password');

然后它应该允许你得到所需的结果。

票数 0
EN

Stack Overflow用户

发布于 2014-10-15 06:43:37

可能是PHP没有检测到文件是UTF-8,因为根据您的评论,BOM丢失了。我找到了一个小函数这里,它应该强迫它读UTF-8。

代码语言:javascript
复制
function file_get_contents_utf8($fn) { 
  $opts = array( 
    'http' => array( 
      'method'=>"GET", 
      'header'=>"Content-Type: text/html; charset=utf-8" 
    ) 
  ); 
  $context = stream_context_create($opts); 
  $result = @file_get_contents($fn,false,$context); 
  return $result; 
}

此外,如果我是您,我将使用字符集来设置mysql连接上的字符集。另外,我会使用SHOW VARIABLES LIKE 'character_set%';,所以看看当前的连接字符集是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26358603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档