【发布时间】:2018-09-24 01:55:55
【问题描述】:
我们目前正在使用 codeigniter 制作一个 PHP 应用程序,我们可以访问 2 个数据库,一个 UTF-8(我们的 MySQL)和一个 Latin1(MSSQL 中的 SQL_Latin1_General_CP1_CI_AS),这个 latin1 数据库是只读的,我们无法控制它,所以我们无法更改它。
然后我们的问题是一些拉丁字符显示为黑色菱形。
我们已经将codeigniter上的数据库连接设置为:
'dbdriver' => 'mssql',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci'
而我们的 PHP 有以下编码:
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
我们的文件也保存为 UTF8。
我们认为,因为 latin1 是 utf8 的子集,所以没有问题,但黑色菱形出现了。 找到的一种解决方案是在显示从 MSSQL 数据库获取的文本之前使用 utf8_encode,但它看起来像 XGH,必须有更好的方法。
所以基本上问题是如何从 Latin1 的数据库中选择和显示 UTF8(因为 php 是 UTF8)?
感谢您的宝贵时间
【问题讨论】:
标签: sql-server codeigniter utf-8 iso-8859-1