Comment conserver le multi-octets dans la base de données SQL Server à l'aide de CodeIgniter

Je suis à l'aide de MS SQL Server et CodeIgniter 2 avec Active Record pour un projet sur lequel je travaille, et je viens de tombé sur ce problème:

Quand je soumettre un formulaire qui contient les Chinois ou en Hindi des personnages, je les stocker dans une table, et quand j'ai vue de tout cela, je reçois sont des points d'interrogation. Si j'essaie anglais ou en caractères grecs, tout semble bien fonctionner.

La raison pour laquelle je crois que c'est quelque chose à voir avec le PHP je suis en train d'écrire, c'est parce que si je l'ai copier-coller le texte chinois directement dans SQL Server Management Studio, toutes les valeurs sont stockées et affichées parfaitement, tant sur le SQL Studio, et l'application web.

Ce sont les db réglages que j'utilise:

$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;

C'est la structure de la table, je suis en essais sur le droit maintenant:

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

Et c'est mon encodage de caractères dans config.php

$config['charset'] = 'utf-8';

De nouvelles données de dépannage

J'ai essayé de sauver la chaîne suivante par le biais de mon formulaire: Iñtërnâtiônàlizætiøn

CodeIgniter a répondu avec cette erreur:

An error occurred translating the query string to UTF-16: No mapping for the Unicode character exists in the target multi-byte code page. .

Cela n'apparaît pas lorsque j'essaie de stocker des caractères Chinois
Merci d'avance 🙂

Peut-être dans votre PHP INI fichier va vous aider à résoudre? ini_set('default_charset', 'UTF-8');
Également sur vos pages web, vérifiez que vous utilisez le bon encodage. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
Je n'étais pas au courant de cette mise en php! Je vais vérifier tommorow et informer 🙂
Ce n'était pas la... et Aussi toutes mes pages ont le <meta> charset UTF-8 :/
Vous utilisez une classe de CodeIgniter ou d'une autre API pour l'interface avec votre base de données? Écrire un moyen rapide et mysqli connecteur et passer une instruction SQL insert avec les caractères UTF-8 dans le corps de la forme, pour voir si vous pouvez repérer un problème avec l'API que vous utilisez.

OriginalL'auteur Loupax | 2012-02-07