Unicode 当字符为日语时,唱片集名称会损坏

Unicode 当字符为日语时,唱片集名称会损坏,unicode,facebook-graph-api,Unicode,Facebook Graph Api,请告诉我“专辑名”的最大数量 现在我正在用Graph API开发照片上传应用程序。 创建相册时,如果日文字符数超过21,则相册名称将损坏。 下面是这个问题的例子 e、 g. 输入: あいうえおかきくけこあいうえおかきくけこあい 已注册唱片集名称: あいうえおかきくけこあいうえおかきくけこあ�� 请注意,如果将超过21个韩文或中文字符设置为唱片集名称,则会出现相同的问题。此字段似乎有长度限制。假设他们使用的是UTF-8,则限制为64字节,而不是整数个字符 Facebook似乎正在以该字节数截断字符

请告诉我“专辑名”的最大数量

现在我正在用Graph API开发照片上传应用程序。 创建相册时,如果日文字符数超过21,则相册名称将损坏。 下面是这个问题的例子

e、 g.
输入:
あいうえおかきくけこあいうえおかきくけこあい
已注册唱片集名称:
あいうえおかきくけこあいうえおかきくけこあ��


请注意,如果将超过21个韩文或中文字符设置为唱片集名称,则会出现相同的问题。

此字段似乎有长度限制。假设他们使用的是UTF-8,则限制为64字节,而不是整数个字符

Facebook似乎正在以该字节数截断字符串,而不管该字节限制是否与字符边界对齐。不幸的是,这种错误行为在本机不将文本字符串作为Unicode字符处理的语言中很常见。在您的案例中,最后一个
占用了三个字节,但只有两个字节的空间,所以剩下的两个尾随字节不能形成有效的UTF-8序列,因此
��

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

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

记录在这里:谢谢你的回答。我得到了这个问题的规格和限制。我将通过检查字节数来处理此问题。