加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 为什么在将MS SQL数据转换为MYSQL时会出现无效字符?

发布时间:2020-12-13 22:37:33 所属栏目:PHP教程 来源:网络整理
导读:我正在编写一个 PHP脚本,用于将数据从Microsoft SQL Server 2008数据库导入MYSQL数据库. MSSQL Server设置为“SQL_Latin1_General_CP1_CI_AS”的排序规则,并且有问题的数据存储在“nchar”类型的列中. 我的PHP网页使用 meta http-equiv="content-type" conte
我正在编写一个 PHP脚本,用于将数据从Microsoft SQL Server 2008数据库导入MYSQL数据库.

MSSQL Server设置为“SQL_Latin1_General_CP1_CI_AS”的排序规则,并且有问题的数据存储在“nchar”类型的列中.

我的PHP网页使用

<meta http-equiv="content-type" content="text/html; charset=utf-8">

表示它们应该以UTF-8字符编码显示.

我正在使用sqlsrv PHP扩展从MSSQL数据库中提取数据.

$sql = 'SELECT * FROM [tArticle] WHERE [ID] = 6429';
$stmt = &sqlsrv_query($dbHandler,$sql);

while ($row = sqlsrv_fetch_object($stmt)) {
  // examples of what I've tried simply to display the data
  echo $row->Text1;
  echo utf8_encode($row->Text1);
  echo iconv("ISO-8859-1","UTF-8",$row->Text1);
  echo iconv("ISO-8859-1","UTF-8//TRANSLIT",$row->Text1);
}

暂时忘记将数据插入MYSQL数据库.我无法在PHP页面中正确显示字符串.从我的列表中的示例:

echo $row->Text1

由我的浏览器呈现为一个明显无效的字符:“Lucy s”

之后的所有示例都呈现为空白:“Lucys”

它看起来像是一个字符集不匹配的问题,但我怎样才能从MS SQL数据库中正确显示这些数据(不改变我的网页编码)?如果我能解决这个问题,我可能会把它存储在MYSQL数据库部分中.

如果源数据库中的字符串是以UTF-8编码的,则应使用utf8_decode,而不是utf8_encode.

但它们可能编码在一些拉丁语或“西方”Windows code page中.所以我会尝试iconv(“CP1252”,“UTF-8”,$row-> Text1);,例如.

另一种方法是运行显式设置已知编码的SQL查询.例如,根据Windows Collation Name (Transact-SQL)文档,此查询将使用代码页1252对字段Text1进行编码:SELECT Text1 COLLATE SQL_Latin1_General_CP1_CI_AS FROM ….

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读