[英]Not inserting Turkish characters in SQL table. Displays 'xxx??xxx' when selected
我正在嘗試在桌子上添加土耳其語名稱,但是顯示時它給了我? 而不是任何一個。 有什么幫助我在這里想念的嗎? 這是我的桌子:
CREATE TABLE IF NOT EXISTS `offerings` (
`dep` varchar(5) CHARACTER SET utf16 COLLATE utf16_turkish_ci DEFAULT NULL,
`grade` varchar(4) CHARACTER SET utf16 COLLATE utf16_turkish_ci DEFAULT NULL,
`section` varchar(3) CHARACTER SET utf16 COLLATE utf16_turkish_ci DEFAULT NULL,
`name` varchar(100) CHARACTER SET utf16 COLLATE utf16_turkish_ci DEFAULT NULL,
`teacher` varchar(50) CHARACTER SET utf16 COLLATE utf16_turkish_ci DEFAULT NULL,
`quota` varchar(2) CHARACTER SET utf16 COLLATE utf16_turkish_ci DEFAULT NULL,
`lec1` varchar(35) CHARACTER SET utf16 COLLATE utf16_turkish_ci DEFAULT NULL,
`lec2` varchar(35) CHARACTER SET utf16 COLLATE utf16_turkish_ci DEFAULT NULL,
`lec3` varchar(35) DEFAULT NULL,
`lec4` varchar(35) DEFAULT NULL,
`lec5` varchar(35) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf16;
正如從答案中所建議的那樣,我選擇的這里是解決這個主題的人的問題的解決方案。 特別感謝所有為解決我的問題做出貢獻的人。
CREATE TABLE IF NOT EXISTS `offerings` (
`dep` varchar(5) NOT NULL,
`grade` varchar(4) COLLATE utf8_unicode_ci NOT NULL,
`section` varchar(3) COLLATE utf8_unicode_ci NOT NULL,
`name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`teacher` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`quota` varchar(2) COLLATE utf8_unicode_ci,
`lec1` varchar(35) DEFAULT NULL,
`lec2` varchar(35) DEFAULT NULL,
`lec3` varchar(35) DEFAULT NULL,
`lec4` varchar(35) DEFAULT NULL,
`lec5` varchar(35) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
VARCHAR是字符串,而NVARCHARS是Unicode字符串。 NVARCHARS每個字符需要更多位來存儲,但范圍更大。 嘗試更新您的數據類型。 這應該可以解決您的問題。
編輯這個答案是錯誤的。 OP明確要求提供MySQL解決方案,但以上內容僅適用於SQL Server。
(答案的開頭...)
請不要使用utf16; 在MySQL表中實際上沒有任何理由。
因此,假設您切換到utf8,讓我們看看是否可以擺脫?
問題。
utf8需要在大約4個地方建立。
SHOW CREATE TABLE
來驗證它們是否已顯式設置為utf8,或者是否是表定義中的默認值。 (更改數據庫默認值是不夠的。) SET NAMES utf8
。 <meta>
標簽。 可能發生了什么:
SET NAMES latin1
生效(默認,但錯誤) CHARACTER SET latin1
(默認值,但錯誤) 由於“ CHARACTER SET
與您所顯示的內容不一致,因此問題可能更加復雜。 請提供
SELECT col, HEX(col) FROM tbl WHERE ...
一些帶有土耳其語字符的簡單單元格。 這樣,我也許可以弄清楚發生了什么。
另外, 有關編碼的參考說明 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.