2009-08-26 94 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的早期用户可能有用户名或真实姓名不是用户名长,我们目前允许。直到您需要保存对您的帐户设置的更改为止。除非您的用户/实名是合适的长度,否则不会保存更改。这意味着您必须更改您的真实姓名/用户名以符合我们最现代的规定。

所以你可能更好的是有一个长的领域,并保存自己一些时间,当你打边界案件。