2009-08-26 87 views
10

我在網站上爲成員的twitter名稱的成員表添加一個字段。從我的工作出發,最大的Twitter名稱長度是20,所以我應該將字段大小設置爲varchar(20)(SQL Server),這似乎很明顯。DB中的Twitter名稱長度

這是個好主意嗎?

如果Twitter開始允許用戶名中包含多字節字符,該怎麼辦?我應該讓這個字段nvarchar?

如果Twitter決定增加用戶名的大小會怎麼樣?我是否應該把它改爲50,然後在用戶輸入一個長於20的名字時提醒用戶?

我想防守地編碼,這樣我就可以減少修改圍繞此輸入字段的代碼和可能需要的數據庫模式更改的機會。

+0

20個字符並不總是等於20個字符,特殊字符可能需要HTML編碼。 – 2010-06-24 16:32:58

回答

22

而尋找同樣的信息,我發現在Twitter的幫助部分某種奇怪的地方以下(爲什麼不是在API文檔誰知道?):

「您的用戶名最多可包含15個字符,爲什麼不能更多?因爲我們在發送短信更新和即時消息時將您的用戶名附加到140個字符上,如果您的姓名長度超過15個字符,則您的信息將過長,無法發送單條短信。

http://help.twitter.com/entries/14609-how-to-change-your-username

所以也許一個甚至可以用VARCHAR(16)

1

[觀點僅]

  • Twitter的工作在短信和有是256個字符的限制,這樣的名字必須是小,以避免撞擊到消息。
  • nvarchar的將是所有的Twitter文字
  • 一個好主意,如果Twitter用戶的真實身份是手機,則最長的電話號碼是您最大 - 20應該很容易掩蓋它!
  • 防守性編程總是很好:)!

[/觀點僅適用]

+5

短信文本限制爲168個字符。 Hooloovoo 2009-08-26 15:44:16

2

如今,空間通常不是一個問題,所以我會使用一個大多通用的方法:使用爲nvarchar(200)。

在設計數據庫模式時,您必須提前兩步,甚至比編程時還要多。或者讓自己有一個好的模式更新策略,那麼你也可以使用varchar(20)。

1

只有這麼多你可以防守編碼,我建議看看twitter API文檔,並遵循那裏指定的任何東西。也就是說,從粗略看來,無處不在似乎指定了用戶名的長度,令人討厭:/

2

我個人並不擔心。使用像200(或一個不錯的圓形數字,如256),你不會有這個問題。然後限制在他們的API上,所以你最好做一些驗證,無論如何它都是一個真正的用戶名。該驗證隱含地包括長度檢查。

+4

我喜歡這個回答,「像256這樣一個不錯的回合數字,」直到我第二次讀它時,甚至沒有讓我覺得奇怪。 – Rob 2009-08-26 18:04:24

0

我猜你正在管理應用程序中的Twitter名稱字段上的數據條目,而不僅僅是在數據庫中。如果您將該字段打開爲200個字符,則只需在一個位置更改代碼,或者如果允許用戶輸入超過20個字符的Twitters名稱,則根本不用擔心發生更改。

2

Twitter允許輸入140個字符作爲傳輸的消息載荷,並在SMS消息的開頭包含「[username]:」。對於與基於SMS的郵件系統相結合的郵件,上限爲140個字符,我認爲他們必須減小允許的郵件大小以增加用戶名。我認爲這是一個相當安全的賭注,20個字符將是最大的用戶名長度。我會使用nvarchar,以防萬一有人使用16位字符,並且可能會填充一點。 nvarchar(24)應該工作;我不會高於nvarchar(32)

如果您打算爲他們的服務開發應用程序,您應該可以在Twitter的API Announcements mailing list上觀看這些消息。

1

這裏要記住的一點是,使用nvarchar的字段需要兩倍的空間,因爲它需要2個字節來存儲每個潛在的unicode字符。因此,使用nvarchar的twitter狀態需要280的大小,再加上一些可能的轉推,因爲那些不包括140個字符的限制。事實上,我今天才發現這件事!

例如:

RT @chatrbyte:這裏有一些偉大的鳴叫 說我轉推。

RT @chatrbyte:未包含在140個字符的限制內。因此,假設一個Twitter用戶名有20個字符的限制,並且想要捕獲一個ReTweet,一個持有一個完整的推文的字段將需要一個大小爲280 + 40的nvarchar(用於用戶名)+ 8 (對於轉推前的初始RT @)+4(對於轉推用戶名後的+空格)= 330.

我會說爲nvarchar(350)去給自己一個小房間。這就是我現在正在嘗試的。如果我錯了,我會在這裏更新。

+0

我相信你錯了:在140個字符中包含「** RT @chatrbyte:**」** _ IS _ **。轉推可能會被截斷以適應。 – drevicko 2013-08-15 23:22:03

9

脫身雖然擁有的用戶名中的名稱和20個字符15個字符的限制新帳戶,對於舊賬戶來說,這個限制似乎是未定義的。文檔here狀態:

Earlybirds:Twitter的早期用戶可能有用戶名或真實姓名不是用戶名長,我們目前允許。直到您需要保存對您的帳戶設置的更改爲止。除非您的用戶/實名是合適的長度,否則不會保存更改。這意味着您必須更改您的真實姓名/用戶名以符合我們最現代的規定。

所以你可能更好的是有一個長的領域,並保存自己一些時間,當你打邊界案件。