在access2000数据库中,为什么“备注”类型的字段中的unicode字符串读出来时不能完全显示,有一部分为“?”,但是“文本”类型的字段中的unicode字符串读出来时完全正常?如何解决这个问题?
(因为我要处理的字符串超过了255,所以用“备注”类型)
(我也用了支持unicode显示的第三方控件)

解决方案 »

  1.   

    数据库设计有问题,和Delphi没有关系!
    Access2000中的字段设计时有UNICODE压缩选项,你注意看一下!
    关于压缩 Text、Memo 或 Hyperlink 字段中的数据
    Microsoft Access 2000 用 Unicode 字符编码方案代表 Text、Memo、或 Hyperlink 字段中的数据。在 Unicode 中每个字符由两个而不是一个字节代表。在一个字节中存储的每个字符的编码方案将用户限制到单一的代码页(包含最多有 256 个字符的编号集合)。但是,因为 Unicode 使用两个字节代表每个字符,因此它最多支持 65,536 个字符。因此,Text、Memo、或 Hyperlink 字段中的数据比其在 Access 旧版本中需要更多的存储空间。可通过将字段的“Unicode 压缩”属性设置为“是”来弥补 Unicode 字符表达方式所造成的影响以确保得到优化的性能。当新建 Text、Memo、或 Hyperlink 字段时,此设置是默认值。当字段的“Unicode 压缩”属性设置为“是”时,第一个字节为 0 的字符在储存时压缩,在检索时解压缩。因为拉丁字符(西欧语言如英语、西班牙语或德语)的第一个字节是 0,Unicode 字符的表达方式不影响完全由拉丁字符组成的压缩数据所需的储存空间。可将 Unicode 所支持的任意字符组合储存到单个字段中。但是,如果特定字符的第一个字节不是 0,就不压缩该字符。注意   除非 Memo 字段需要 4096 字节或压缩后较少的空间,否则该字段中的数据未被压缩。因此,Memo 字段的内容可能在一个记录中被压缩,但是在另一个记录中未被压缩。
      

  2.   

    Microsoft Office 对 Unicode 的支持
    Microsoft Office 基于 Unicode 文字编码标准。这样,无论文档以何种语言撰写,只要操作系统支持该语言的特殊字符,Office 程序都能正确显示文档。Office 2000 提供的字体
    Office 2000 提供的许多 TrueType 字体都支持多种使用不同书写系统的语言,例如希腊语或俄语,而不仅限于西欧语言;同时还提供了几种供亚洲语言使用的字体。Office 提供的 Arial Unicode MS 字体是一种完全的 Unicode 字体,包含约 40000 个字母符号、表意符号以及在 Unicode 2.1 标准中定义的符号。因为 Arial Unicode MS 字体很大而且为了设计出这样的字体在字型上也打了折扣,所以只有在无法使用设计用于不同的书写系统的多种字体时,才应使用该字体。例如,如果在 Microsoft Access 中有来自许多不同书写系统的多语种数据,就可用 Arial Unicode MS 作为显示数据表的字体,因为数据表无法接受多种不同的字体。如果安装 Office 2000 或 Office 程序时没有安装 Arial Unicode MS 字体,那么要安装该字体,只需重新运行 Office 安装程序并选择“添加或删除功能”,然后单击“Office 工具”旁的加号(+),再单击“国际性支持”旁的加号,再单击“通用字体”旁的图标,然后选择需要安装的选项,即可安装该字体。重新安装 Office。
      

  3.   

    你们说的这些我都知道,现在关键是我的字符串必须用Memo类型,请问用Memo类型存储的unicode为何读出时不正常???
      

  4.   

    你用什么读出的,代码怎么的?使用widestring么?
      

  5.   

    读出语句是:
    TntMemo1.Text := ADOTable1.FieldValues['word']
    (注:TntMemo1控件支持unicode显示。
      我将"word"字段类型设为“备注”时,字体范围中的简体字和繁体字可以正常显示,部分不在字体范围的就不正常了。改为“文本”类型则都正常。)
      

  6.   

    使用Trichedit 并设定plainText:=true;
    是否你的TntMemo不支持呀?
      

  7.   

    看看你的操作系统是什么版本,ACCESS的驱动是最新的吗?微软也会有BUG的,打个补丁先!