我使用MS SQL Server和笨2的一个项目我工作的活动记录存储在SQL Server数据库的多字节字符,我只是偶然发现了这个问题:如何使用笨
当我提交一个包含中文或印地文字符的表格,我将它存储在一个表格中,当我查看时,我收到的都是问号。如果我尝试英语或希腊字符,一切似乎都很好。
我相信这是与我写的PHP有关的原因是因为如果我直接在SQL Server Management Studio中复制粘贴中文文本,所有值都存储并完美显示,都在SQL Studio和Web应用程序。
这是我使用的数据库设置:
$db['local']['dbdriver'] = 'sqlsrv';
$db['local']['dbprefix'] = '';
$db['local']['pconnect'] = FALSE;
$db['local']['db_debug'] = TRUE;
$db['local']['cache_on'] = FALSE;
$db['local']['cachedir'] = '';
$db['local']['char_set'] = 'utf8';
$db['local']['dbcollat'] = 'utf8_general_ci';
$db['local']['swap_pre'] = '';
$db['local']['autoinit'] = TRUE;
$db['local']['stricton'] = FALSE;
这是表的我测试上,现在的结构:
CREATE TABLE [dbo].[languages](
[id] [int] IDENTITY(1,1) NOT NULL,
[language] [nvarchar](1024) NULL,
[language_local] [nvarchar](1024) NULL,
[lang_code] [nvarchar](100) NULL,
[core] [bit] NULL,
CONSTRAINT [PK_languages] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
而且这是在我的字符集编码config.php文件
$config['charset'] = 'utf-8';
新的故障排除数据
我想通过我的形式保存以下字符串:Iñtërnâtiônàlizætiøn
笨回答与此错误:
An error occurred translating the query string to UTF-16: No mapping for the Unicode character exists in the target multi-byte code page. .
不出现,当我尝试存储中国文字 预先感谢您:)
也许在您的PHP INI文件中设置它可以帮助您排除故障? ini_set('default_charset','UTF-8'); – Markus 2012-02-07 15:28:15
也在您的网页上确认您使用的是正确的编码。 – Markus 2012-02-07 15:29:31
我不知道这个设置在PHP中!我会检查它tommorow并通知:) – Loupax 2012-02-07 16:28:16