我可以并且应该使用本地化的 UTF-8 字符存储键值对吗?

Posted

技术标签:

【中文标题】我可以并且应该使用本地化的 UTF-8 字符存储键值对吗?【英文标题】:Can and should I store key-value pairs with localized UTF-8 characters? 【发布时间】:2022-01-05 03:25:32 【问题描述】:

好的,关于 JSON 和 UTF-8/unicode 编码的问题。我的简单堆栈是后端:MongoDB + GraphQL,前端:Flutter 应用程序。

毫无疑问,在存储数据并稍后在应用程序中解析数据时,对于像 "firstName":"Oscar" 这样的数据模型,有一个用英文命名事物的国际编码标准,这很好。

但是,如果我的项目的代码仅打算由其他母语编码员(在本例中为瑞典语)审查和完成其他工作,那么将数据模型字段命名为 "fornamn":"Oscar" 或甚至在存储、获取或解析 JSON 到 MongoDB 文档、GraphQL 解析器和 Flutter dart 类模型时使用 Unicode 键 "förnamn":"Oscar"

我为什么要本地化存储它? - 因为一些字段和数据结构在用母语进行心理建模时更有意义,更容易概念化,而不是来回翻译成英语。

【问题讨论】:

【参考方案1】:

使用带有 Unicode 字符的 JSON 非常好。这也适用于 JSON 对象中的键。我看不出有什么理由不这样做。

应始终使用 Unicode 编码(最好是 UTF-8)保存/传输 JSON。如果使用非 Unicode 编码,则 JSON 需要使用转义序列来重写该编码中不可用的字符。这同样适用于键和其他 JSON 元素。

【讨论】:

以上是关于我可以并且应该使用本地化的 UTF-8 字符存储键值对吗?的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 本地存储 - 我可以为每个键存储多个值,如果不能,我可以使用啥替代方案?

我可以使用啥查询从选定键值的本地存储中获取数据

UTF-8 字符显示为垃圾值

如果我只使用整数作为键,如何在本地存储中获取最后插入的键?

如何编码 Azure 存储表行键和分区键?

如何从具有超时的终端读取UTF-8字符?