StringBuilder 附加波斯数字
StringBuilder appends Persian Numbers
我正在尝试将一些数字附加到一个字符串,该字符串已经包含波斯字符并且 StringBuilder
总是将波斯数字附加到该字符串。
StringBuilder sb = new StringBuilder();
sb.Append( other things );
sb.Append("', '");
sb.Append("1234234");
sb.Append("', ");
即使我在上面的代码中明确使用英语数字,我仍然会得到波斯数字。如何将英文数字附加到此字符串?
更新
这些行模拟了我的问题,你可以通过跟踪这段代码看到波斯数字:
StringBuilder temp = new StringBuilder();
temp.Append("INSERT INTO [db] (....) VALUES ('21211221', 111555,
'2015/12/12', 'نام خانوادگی ', 'اتاق چهار تخته");
temp.Append("', '");
temp.Append("234234");
最后追加的应该是英文数字,但不是。
正如@Jon-Skeet所说,这是渲染器的问题。 Windows 文本渲染引擎在获取波斯字符后变得混乱,并继续以 RTL 顺序追加后续文本。因此,我们需要帮助渲染器以 LTR 顺序正确渲染附加文本。为此,我们可以在波斯文本后附加 Unicode 从左到右的符号 'U+200E'。
StringBuilder temp = new StringBuilder();
temp.Append("INSERT INTO [db] (....) VALUES ('21211221', 111555, '2015/12/12', 'نام خانوادگی ', 'اتاق چهار تخته");
temp.Append('\x200E');
temp.Append("', '");
temp.Append("234234");
没有 LTR 符号:
INSERT INTO [db] (....) VALUES ('21211221', 111555, '2015/12/12', 'نام خانوادگی ', 'اتاق چهار تخته', '234234
使用 LTR 符号:
INSERT INTO [db] (....) VALUES ('21211221', 111555, '2015/12/12', 'نام خانوادگی ', 'اتاق چهار تخته', '234234
我正在尝试将一些数字附加到一个字符串,该字符串已经包含波斯字符并且 StringBuilder
总是将波斯数字附加到该字符串。
StringBuilder sb = new StringBuilder();
sb.Append( other things );
sb.Append("', '");
sb.Append("1234234");
sb.Append("', ");
即使我在上面的代码中明确使用英语数字,我仍然会得到波斯数字。如何将英文数字附加到此字符串?
更新
这些行模拟了我的问题,你可以通过跟踪这段代码看到波斯数字:
StringBuilder temp = new StringBuilder();
temp.Append("INSERT INTO [db] (....) VALUES ('21211221', 111555,
'2015/12/12', 'نام خانوادگی ', 'اتاق چهار تخته");
temp.Append("', '");
temp.Append("234234");
最后追加的应该是英文数字,但不是。
正如@Jon-Skeet所说,这是渲染器的问题。 Windows 文本渲染引擎在获取波斯字符后变得混乱,并继续以 RTL 顺序追加后续文本。因此,我们需要帮助渲染器以 LTR 顺序正确渲染附加文本。为此,我们可以在波斯文本后附加 Unicode 从左到右的符号 'U+200E'。
StringBuilder temp = new StringBuilder();
temp.Append("INSERT INTO [db] (....) VALUES ('21211221', 111555, '2015/12/12', 'نام خانوادگی ', 'اتاق چهار تخته");
temp.Append('\x200E');
temp.Append("', '");
temp.Append("234234");
没有 LTR 符号:
INSERT INTO [db] (....) VALUES ('21211221', 111555, '2015/12/12', 'نام خانوادگی ', 'اتاق چهار تخته', '234234
使用 LTR 符号:
INSERT INTO [db] (....) VALUES ('21211221', 111555, '2015/12/12', 'نام خانوادگی ', 'اتاق چهار تخته', '234234