rus*_*nge 7 php sql-server character-encoding
我正在编写一个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">
Run Code Online (Sandbox Code Playgroud)
表示它们应该以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);
}
Run Code Online (Sandbox Code Playgroud)
暂时忘记将数据插入MYSQL数据库.我无法在PHP页面中正确显示字符串.从我的列表中的示例:
echo $row->Text1
Run Code Online (Sandbox Code Playgroud)
由我的浏览器呈现为一个明显无效的字符:"Lucy s"
之后的所有示例都呈现为空白:"Lucys"
它看起来像是一个字符集不匹配的问题,但我怎样才能从MS SQL数据库中正确显示这些数据(不改变我的网页编码)?如果我能解决这个问题,我可能会把它存储在MYSQL数据库部分中.
sco*_*fey 14
如果源数据库中的字符串是以UTF-8编码的,则应使用utf8_decode,而不是utf8_encode.
但它们可能编码在一些拉丁语或"西方" Windows代码页中.所以我会尝试iconv("CP1252", "UTF-8", $row->Text1);,例如.
另一种方法是运行显式设置已知编码的SQL查询.例如,根据Windows排序规则名称(Transact-SQL)文档,此查询将使用代码页1252对字段Text1进行编码: SELECT Text1 COLLATE SQL_Latin1_General_CP1_CI_AS FROM ....
小智 7
试试这个命令它对我有用:
$connectionInfo = array( "Database"=>"DBName", "CharacterSet" =>"UTF-8");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12530 次 |
| 最近记录: |