2010-09-04 58 views
3

我發現了一個類似的帖子,但仍不確定。用於UTF-8的Varchar?

由於我正在編寫我的留言簿等多語言,因此我在mysql中將排序規則更改爲uft8_unicode_ci,一切正常,我沒有想到的是我使用的類型,我的留言簿是多語言對於名稱字段,用戶不能輸入超過50個字符,主題相同,留言留言800字符。

現在在PHP中做這個檢查是直接的,即。在strlen等使用mb_檢查字符串長度。

但是我擔心數據可能會在mysql中被截斷。顯然普通字符是可以的,但是當它是中文字符和其他非標準字符時,顯然這是我關心的問題,因爲我不知道varchar如何計算它們。

+0

您運行的是哪個版本的mysql? – 2010-09-04 13:58:14

+0

嗨,我在WAMP中運行5.1.36(默認爲最新版本的wamp),但在我的網站實際上將要託管的網站是5.1.48。我也喜歡使用相同的版本測試本地和主要主機上的網站,但WAMP沒有5.1.48的MySQL版本插件,目前它們只能達到5.1.41。 謝謝 – PHPLOVER 2010-09-04 14:02:39

回答

4

由於mySQL 4.1,VARCHAR計數在字符而不是字節。

您可以安全地爲需要保存255個字符的消息字段指定VARCHAR(255)類型。

+0

謝謝佩卡,那個人的帖子被刪了?我試圖回覆,它說它被刪除,因爲我很困惑他們是如何說我需要一個文本字段時,他們提供的鏈接說varchar支持高達65535字節。現在我得到了VARCHAR(800),它非常令人困惑,因爲我想如果我想在我的示例中允許在varchar字段中使用800個字符,那麼我需要指定它,就像我有VARCHAR(800)。 謝謝 – PHPLOVER 2010-09-04 14:39:03

+0

@PHPLOVER VARCHAR用於支持只有255個字符,但改變(我認爲)與4.1。我不確定你的問題是什麼? Varchar(800)應該可以正常工作800個字符。 – 2010-09-04 14:43:20

+0

嗨Pekka,之所以我很困惑,你說「我可以安全地指定一個VARCHAR(255)」,這是隻有255個字符,我的留言信息是800 MAX,所以如果我指定255剩餘的545個字符將被截斷,我應該想象一下,以及它是多語言,我不確定VARCHAR如何處理,例如chineese字符,如1 chineese字符等於1字節,我發現它令人困惑。 謝謝 – PHPLOVER 2010-09-04 14:54:05