我想在MySQL 5.1中選擇unicode字符/ u2028。 MySQL 5.1確實支持utf8和ucs2。在mysql中選擇unicode字符u2028 5.1
在MySQL的新版本,我可以選擇的字符只是使用UTF-16或UTF32歸類:
SELECT char(0x2028 using utf16);
SELECT char(0x00002028 using utf32);
但MySQL 5.1中不支持UTF-16和UTF32。我怎麼才能選擇unicode字符呢?
也許關於我的用例的幾句話:我有一個第三方應用程序,它將數據存儲在mysql數據庫中,並使用JavaScript進行用戶界面。該應用程序不處理問題unicode字符/ u2028和/ u2029是有效的JSON,但會破壞JavaScript代碼。 (有關詳細信息,請參閱http://timelessrepo.com/json-isnt-a-javascript-subset)所以我想知道有多少數據受該問題影響,並且可能在MySQL上使用替換來修復它。
爲了說明問題:
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`string` varchar(100) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
INSERT INTO `test` (`id`, `string`) VALUES
(1, 'without U+2028'),
(2, 'with U+2028 at this "
"point');
SELECT * FROM test WHERE string LIKE CONCAT("%", char(0x2028 using utf16), "%");
// returns row 2 as expected
SELECT * FROM test WHERE string LIKE CONCAT("%", char(??? using utf8), "%");
// U+2028 in utf8 is 0xE2 0x80 0xA8 isn't it?
// But how to parse this to char function?
不太確定問題所在。 U + 2028是一個完美支持MySQL的'utf8'編碼的字符。但是,CHAR函數及其參數有點不同。爲什麼你想要將文字'0x2028'轉換爲UTF-8編碼的U + 2028 Unicode字符?這真的是你想解決的問題嗎? – deceze
U + 2028 LINE SEPARATOR很少使用。你確定你需要處理它嗎?它可能會導致JavaScript中的問題,但這與MySQL有什麼關係? –
@ JukkaK.Korpela正如我在我的使用案例中寫到的,我必須處理U + 2028和U + 2029,僅僅是因爲它們在JavaScript中引起的問題。由於前端的JavaScript問題,我需要刪除第三方應用程序的MySQL數據庫的這些字符。 – jelhan