字符为日语时,相册名称会损坏

时间:2011-09-22 09:15:19

标签: unicode facebook-graph-api

请告诉我“相册名称”的最大数量。

现在我正在使用Graph API开发Photo Upload应用程序。 创建相册时,如果日文字符数超过21,则相册名称会损坏。 以下是此问题的示例。

e.g。
输入:
あいうえおかきくけこあいうえおかきくけこあい
注册专辑名称:
あいうえおかきくけこあいうえおかきくけこあ

请注意,如果将超过21个韩语或中文字符设置为专辑名称,则会出现同样的问题。

1 个答案:

答案 0 :(得分:2)

这个字段似乎有一个长度限制。猜测他们使用的是UTF-8,它将是64字节的限制,而不是整数个字符。

Facebook似乎在该字节数处截断字符串,无论该字节限制是否恰好与字符边界对齐。不幸的是,这种不当行为在不能将文本字符串本身作为Unicode字符处理的语言中很常见。在你的情况下,最后一个占用三个字节,但是只有两个空间,所以你得到两个尾随字节,这些字节不构成有效的UTF-8序列,因此��。< / p>

要阻止这种情况发生,你必须为他们完成工作,并以Unicode干净的方式强加长度限制。一种方法是自己编码为UTF-8,进行截断,然后转换回忽略无效结束字节的字符。例如在Python中:

>>> print u'あいうえおかきくけこあいうえおかきくけこあい'.encode('utf-8')[:64].decode('utf-8', 'ignore')
あいうえおかきくけこあいうえおかきくけこあ