С# SQL Select китайские символы возвращает странные символы

Я пытаюсь перевести программу на китайский язык, но у меня проблемы с базой данных. Он возвращает странные строки символов, и я предполагаю, что это из-за неправильной кодировки, но я не уверен, что делать.

Если я устанавливаю для данных столбца значение 头版, оно возвращается

>> 头版

Если я установлю для данных столбца значение 头版, они вернутся

>> ??

Это работает нормально, потому что если я вставлю '头版' в базу данных, он будет вставлен как '头版', но я хотел бы, чтобы он отображал символы правильно, поэтому поиск по базе данных будет проще.

Я пытался запустить этот запрос при подключении к базе данных

SET NAMES utf8;

Также пробовал это

SET NAMES utf8; SELECT * FROM `table` ORDER BY num;

Но это ничего не меняет. В культуре установлен ж-ханс.


person kopa    schedule 01.02.2015    source источник
comment
Каков тип данных столбца?   -  person Mark PM    schedule 01.02.2015
comment
Как это определяется? Вы определили это как utf8?   -  person Mark PM    schedule 01.02.2015
comment
Набор символов — utf8, а сопоставление — utf8_general_ci.   -  person kopa    schedule 01.02.2015
comment
Какую кодировку вы используете для подключения к базе данных? Можно найти в строке подключения.   -  person Caramiriel    schedule 03.02.2015


Ответы (1)


Столбец должен быть nvarchar. Этот тип поддерживает Unicode и позволяет использовать неанглийские символы (например, китайский, арабский и т. д.).

Обновить

Вышеупомянутое было для SQL Server. Для MySql столбец должен быть VARCHAR(50) CHARACTER SET UCS2.

UCS2 лучше, чем utf-8 для китайского языка, потому что для большинства его символов требуются 16-битные кодовые точки. При использовании utf-8 для хранения кодовой точки потребуется 3 байта.

person Richard Schneider    schedule 02.02.2015
comment
Я только что проверил, и я не могу установить столбец в nvarchar. У меня его нет? Я использую Navicat и MySQL 5.6.21. Что может быть причиной этого? - person kopa; 03.02.2015