【发布时间】:2017-09-29 08:11:54
【问题描述】:
我正在将一些来自第三方的字符串保存到我的数据库 (postgres) 中。有时这些字符串太长,需要截断以适合我表中的列。
在某些随机情况下,我不小心在有 Unicode 字符的地方截断了字符串,这给了我一个无法保存到数据库中的“损坏”字符串。我收到以下错误:Unable to translate Unicode character \uD83D at index XXX to specified code page。
我创建了一个最小的示例来向您展示我的意思。在这里,我有一个包含 Unicode 字符的字符串(“小蓝钻”???? U+1F539)。根据我截断的位置,它是否会给我一个有效的字符串。
var myString = @"This is a string before an emoji:???? This is after the emoji.";
var brokenString = myString.Substring(0, 34);
// Gives: "This is a string before an emoji:☐"
var test3 = myString.Substring(0, 35);
// Gives: "This is a string before an emoji:????"
有没有办法让我在不意外破坏任何 Unicode 字符的情况下截断字符串?
【问题讨论】:
标签: c# string postgresql unicode