我使用res.set('Content-Type', 'text/csv');
var toCsv = require('to-csv');
// obj is a just a standard JavaScript object.
res.send(toCsv(obj));
创建应用程序并为Unity3d
构建它,当我在输入字段中写入android native smiles时 - 我遇到了错误
Android
chars包含(invalid utf-16 sequence at 1411555520 (missing surrogate tail)):
r.font.RequestCharactersInTexture(chars, size, style);
,而不是包含原生的android微笑。我怎么能支持原生的微笑?我为输入字段使用自己的类。
答案 0 :(得分:1)
不幸的是,使用Unity支持表情符号很难。当我实现此功能时,花了大约一个月的时间来完成它,使用自定义文本布局引擎和字符串类。所以,如果这个要求不是特别重要,我会建议削减这个功能。
这个特殊错误背后的原因是Unity逐个从输入字符串中获取字符,并更新每个字符的可视字符串。从外行人的角度来看,这是完全有道理的。但是,它没有考虑在C#中使用的UTF-16编码如何工作。
UTF-16编码每个unicode字符使用16位。对于您通常使用的几乎所有角色来说都足够了。 (并且,正如每个开发人员都知道的那样,“几乎所有”都是一个红旗,它将长时间处于休眠状态,然后会爆炸并摧毁你所爱的一切。)但事实恰巧,表情符号字符是<strong>不是< / strong>适合16位UTF-16字符,并使用特殊情况 - surrogate pair :
代理项对是UTF-16字符的对,表示单个Unicode字符。这意味着它们本身没有任何意义,当你试图渲染一个代理头或代理尾的UTF-16字符时,你可能会得到这样的错误或类似的错误。 / p>
基本上,你需要实现的是某种缓冲区,它将逐个接受C#UTF-16字符,然后在验证所有代理项对被关闭时将它们传递给渲染代码。
哦,我差点忘了!某些表情符号字符(如国家/地区标志)由两个unicode字符表示。这意味着他们可能会占用四个UTF-16字符。文字编码不是很有趣吗?