Я использую 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. .
Это не появляется, когда я пытаюсь сохранить китайские символы Заранее благодарю :)