ASP CODEPAGE 65001 и Mysql 5 utf-8 - PullRequest
       20

ASP CODEPAGE 65001 и Mysql 5 utf-8

0 голосов
/ 14 марта 2012
charset = UTF-8

CODEPAGE = 65001

MySql version: 5.0.92-enterprise-gpl-log

ADO.Version = 2.8

Когда я выполняю поиск с использованием символов Юникода, например:

INSERT INTO table (utf8) VALUE ('♂')
SELECT utf8 FROM table WHERE utf8 = '♂' // \u2642

Где utf8 - сопоставление VARCHAR utf8_unicode_ci

MySql возвращает 0 строк.

Удаление CODEPAGE=65001 MySql возвращает 1 строку.НО Server.HTMLEncode теперь возвращает странные символы, а символы utf8 теперь имеют длину> 1. Ничего страшного.

edit:

Хорошо, теперь я запутался:этот запрос работает:

SELECT utf8 FROM table WHERE CONVERT(utf8 USING latin1) COLLATE latin1_general_ci = '♂'

очевидно, что это плохо, он игнорирует индексы.

Любая помощь?

1 Ответ

1 голос
/ 15 марта 2012

Не включайте строковые литералы в сценарий ASP, у которых есть символы вне диапазона ASCII.Парсер скриптового движка не выполняет многобайтовые наборы символов.Используйте ChrW со значением Unicode для других символов.

...