【发布时间】:2019-10-01 06:13:04
【问题描述】:
我正在使用 Microsoft.Reporting.WinForms.dll 将我的 RDLC 呈现为 pdf 文件,但是当我使用 adobe reader 打开 pdf 文件时,我遇到了一些特殊土耳其语字符的问题。在 pdf 中,它们看起来很正常,但是当我尝试使用 CTRL + F 在 pdf 文件中搜索一些单词。我找不到这些词。即使我的 pdf 文件包含这些土耳其语字符。另外,当我将这些单词复制粘贴到文件中时,我会得到像???????????????????????????? 这样的字符。有趣的是,我也使用相同的 dll 将我的 RDLC 呈现为 excel 文件。我使用相同的类相同的代码和相同的方法。我在 excel 文件中没有这个问题。
我使用 WinForms.dll 中的byte[] Render(string format); 方法进行渲染。也许某些特殊字符的 ASCII 码超出了字节数组的范围,可能正因为如此,它无法为 pdf 格式呈现每个字符,但我不确定。
谢谢...
【问题讨论】:
-
能贴出所有相关代码吗?
-
这种情况是否只发生在adobe阅读器或其他pdf阅读器中?,您使用的是哪种字体?
-
.NET 字符串是 Unicode,而不是 ASCII。没有特殊字符。如果使用错误的代码页读取 ASCII 文本,或者使用错误的代码页在屏幕上显示 ASCII 文本,则会出现这样的方块。数据从何而来?它来自
varchar或nvarchar字段吗?如何检索值? -
不知何故,在某个地方,ASCII 文本被存储而不是 Unicode。也许数据库使用
varchar字段而不是nvarchar,并且客户端使用与数据库不同 的排序规则。或者数据存储时使用了错误的排序规则。 -
@Bacon 实际上我对所有 pdf 阅读器都有同样的问题。我在 RDLC 中使用了许多字体。如Roboto、Segoe UI Light、Roboto Condensed、Segoe UI、Segoe UI Black。每种字体都有相同的问题。