我正在将 MS SQL Server 和 CodeIgniter 2 与 Active Record 一起用于我正在处理的项目,我偶然发现了这个问题:
当我提交包含中文或印地语字符的表单时,我将它存储在一个表中,当我查看它时,我得到的只是问号。如果我尝试使用英语或希腊字符,似乎一切正常。
我认为这与我正在编写的 PHP 有关的原因是,如果我直接在 SQL Server Management Studio 中复制粘贴中文文本,所有值都会在 SQL Studio 上完美存储和显示, 和网络应用程序。
这些是我正在使用的数据库设置:
$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
CodeIgniter 回复了这个错误:
An error occurred translating the query string to UTF-16: No mapping for the Unicode character exists in the target multi-byte code page. .
我尝试存储汉字时没有出现 提前谢谢你:)
最佳答案
尝试在插入到数据库之前使用 iconv() 转换您的输入:
$input = iconv('','UTF-8',$str);
关于php - 如何使用 CodeIgniter 在 SQL Server 数据库中存储多字节字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9178795/