【问题标题】:Ensure that text field in Sql Server database uses specific font确保 Sql Server 数据库中的文本字段使用特定字体
【发布时间】:2010-01-27 01:25:24
【问题描述】:

短背景: 我终于隔离了一个我遇到的错误。问题是我的网络用户使用 Safari 访问我的 ASP.NET 应用程序,他们的内容存储在与所有其他用户不同的字体中。这是一个问题,因为我用来动态创建 PDF 的第 3 方应用程序只能识别 2 种字体(arial 和 times new roman),而 Safari 插入的任何字体都是不同的字体。

解决方案: 我希望做的是将 Sql Server 中的列设置为仅存储一种字体。如果这是不可能的,我可以删除这篇文章并找到另一个解决方案,但这个将是最有效的。

编辑: 我忘记的一件事很有趣。唯一似乎设置了错误字体的字符是单引号 ' 和双引号 "

【问题讨论】:

  • 字体与数据库有什么关系?你的问题很不清楚。
  • 字体导致从数据库读取值并使用它们创建动态 PDF 的代码出现问题。文本以我无法处理的字体从数据库中的文本字段中提取出来。因此,如果我可以控制数据库中可以包含哪些字体,那么我就不必担心从数据库中提取文本的代码。

标签: asp.net sql-server sql-server-2008 fonts safari


【解决方案1】:

问题与字体无关。除非您专门存储 RTF 或 HTML 编码文本,否则数据库文本字段不会存储字体信息。

问题是有多种类型的引号。通常在编程中,我们将 char 39 用于单引号,将 char 34 用于双引号。

文字处理器(显然是 Safari)通常会自动将这些引号替换为卷曲版本。见下表:

Char    Value
34      Plain double quote
39      Plain single quote (apostrophe)
145     Curly left single quote
146     Curly right single quote
147     Curly left double quote
148     Curly right double quote

如果您想在数据库中标准化这些值,请在插入数据库之前将卷曲版本替换为普通版本。

【讨论】:

    【解决方案2】:

    我唯一能想到的是您的“其他字体”用户以某种方式传递了不同的信息,并且文本没有被理解为 ASCII。

    SQL Server 只存储字符串,它不会存储字体信息。但是...尝试将数据存储在 varbinary(max) 列中,看看是否适合您。您可以将任何内容放入 varbinary(max)... 如果这不能解决您的解决方案(我怀疑它不会),您可以继续并找出您的 ASP.Net 应用程序出了什么问题。

    【讨论】:

    • Rob,我在阅读您的回答后记得,特别是两个字符似乎将字体卡在了它们上面。我编辑了问题以提及单引号和双引号。也许 Mac 对这两个字符使用不同的代码。
    • 是的 - 我猜它正在编写一个不属于 ASCII 集的字符。也许您应该考虑使用 nvarchar 而不是 varchar。 nvarchar 允许 Unicode 字符,它应该涵盖你。但是每个字符占用 2 个字节,因此在进行更改之前请考虑这一点。
    • 我使用的是“text”,而不是“nvarchar”或“varchar”
    • text 使用 varchar... 试试 ntext。
    • 另外值得注意的是不再推荐使用text类型,即varchar(max)ntextnvarchar(max)imagevarbinary(max) 也是如此。
    猜你喜欢
    • 2010-10-19
    • 2018-03-20
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2013-04-12
    • 1970-01-01
    相关资源
    最近更新 更多