【问题标题】:SQLite database supporting Unicode data支持 Unicode 数据的 SQLite 数据库
【发布时间】:2013-10-16 01:32:14
【问题描述】:

我正在使用需要将 unicode 字符串拖入 jtable 的 java swing 应用程序。是否可以将 unicode 数据存储在 SQLITE 数据库中?如果是这样,哪个 SQLite 确实支持 unicode..我需要免费的 sqlite 而不是高级版..

【问题讨论】:

  • 你指的是什么premium版本? SQLite 是一个单一的开源库
  • 其实SQLite就是in the public domain。您可以获得“专业支持”并购买"Proprietary SQLite Extensions"
  • 您应该提供一些代码(完整运行示例),您可以在其中尝试将数据写入/读取数据库。那时问题很可能会很明显。

标签: sqlite


【解决方案1】:

SQLite 始终将文本数据存储为 Unicode,使用创建数据库时指定的 Unicode 编码。数据库驱动程序本身负责将数据作为您的语言/平台使用的编码中的 Unicode 字符串返回。

如果您遇到转换问题,您的应用程序尝试存储 ASCII 字符串而不将其转换为 Unicode,或者您尝试读取一个值并强制对其进行转换。

SQLite 使用一种dynamic typing,其中每个 都使用特定的存储类进行存储。列的类型指定关联性 或值的处理方式。例如:

具有 NUMERIC 关联的列可能包含使用所有五个存储类的值。当文本数据插入NUMERIC列时,文本的存储类转换为INTEGER或REAL

有五种存储类,NULL、INTEGER、REAL、TEXT、BLOB。 TEXT 使用为数据库指定的 Unicode 编码(UTF-8、UTF-16BE 或 UTF-16LE)存储字符串数据。

您面临什么具体问题,或者这是一个普遍问题?

【讨论】:

  • 我想在我的数据库中添加一些中文字符..但是当我插入 sqlite 时,它​​被更改为'?'。我应该使用什么类型的编码来支持中文、日文语言。
  • @use:由于您使用的是 Java(对字符串使用 UTF-16 编码),因此您应该确保您的 SQLite DB 也设置为使用 UTF-16。这可以在opening a new database 时完成,或使用PRAGMA encoding 设置。这是基于您的 Java 库本身不执行任何编码的假设。
  • 澄清一下 - 任何有效的 ASCII 字符串 一个有效的 utf-8 字符串。它不需要转换。这是设计使然。但需要明确的是,ASCII 字符从代码点 0 运行到代码点 127。超出此范围的任何字符都不是 ASCII。这包括重音字符等。
【解决方案2】:

SQLite 总是使用 Unicode 字符串。

【讨论】:

  • 谢谢..但它插入汉字吗?字符被修改为 ?
【解决方案3】:

sqlite3 不完全支持 UNICODE。有一个名为 CppSQLite3 的包装类,它完全支持 UNICODE>

【讨论】:

  • SQLite 完全支持存储和检索 Unicode 字符串,编码为 UTF-8、UTF-16LE 或 UTF-16BE。 SQLite 不支持的唯一 Unicode 方面是不区分大小写的字符匹配。提议的图书馆没有在该部门添加任何内容。你能详细说明一下吗?
  • SQLite3 和 UNICODE 存在很多问题,如果您需要完整的 UNICODE 支持,则需要一个包装类,例如 CppSQLite3。
  • OP 正在询问 存储 Unicode 字符串。问题不是询问 Unicode 操作。目前还不清楚,您指的是哪些与 Unicode 相关的问题(“有很多问题” 并不完全有启发性),以及提议的库实际解决了哪些问题。该库看起来像一个 C++ 包装器,除了资源管理之外没有任何其他功能。
  • Sqlite 当然存储 UNICODE 字符串。那是对的。但是,您如何存储这些字符串...您可以使用 DB Browser for SQLite,但以编程方式您需要接受 char_t * 而不是 char * 字符串(或 std::wstring)的 APi 函数,CppSqlite3 的目的是添加缺少 sqlite3 缺少(在 API 级别上)。 softvoile.com/development/CppSQLite3U
  • 请阅读sqlite_bind_* 参考文档以了解该接口以及它如何处理文本。那应该回答问题“你如何存储这些字符串...”.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多