【问题标题】:How to convert json unicoded value to other font's unicode?如何将 json 编码值转换为其他字体 unicode?
【发布时间】:2013-09-07 13:07:36
【问题描述】:

我的数据库中有本地字体的数据。我可以在 php 中成功提取它(在网页中显示相同的本地单词)。现在,我想使用 JSON 发送这些数据,以便 Android 应用程序可以访问它。在 JSON 中编码时,是否可以使用不同字体的 unicode 进行编码?

在检索到 JSON 编码值后,单词可以以字体 A 显示(但格式不完整)。但我想使用字体 B 来展示它(以便在此解决损坏的东西)。

那么,有什么方法可以使用不同的字体进行编码,以便我可以解决我的问题?

谢谢。

【问题讨论】:

    标签: android json unicode fonts encode


    【解决方案1】:

    那么,有什么方法可以使用不同的字体进行编码,以便我可以解决我的问题?

    没有。 Unicode 字符串只包含纯语义文本。其中没有允许您选择不同字体的标记结构;必须由 HTML 等文本上方的层提供。

    单词可以以字体 A 显示(但格式不正确)。但我想使用字体 B 来展示它(以便在此解决损坏的东西)。

    使用 JSON 并从中显示数据的应用必须更改为使用字体 B 显示。

    请注意,Android 对印度语脚本的支持历来是出了名的差,并且仍然存在错误;在 4.x 系列之前,您可能会丢失任何类型的字体 B 甚至是正确的天城体字形布局。

    【讨论】:

    • 感谢您的清理。我仍然对 GB 2.3 中字体 A 缺失的字形有问题,等等。字体 B 完全不见了。有什么想法吗?
    • 如果是您的应用,您可以将 Font B 与它捆绑在一起,以基本方式呈现字形。但是你永远不会在 Gingerbread 中得到正确的印度复杂文本布局,这对印地语来说几乎是一个巨大的损失。
    • :( 当我捆绑字体 B(它不会中断)并将其用于文本时,我得到的只是矩形而不是文本。(对于 2 种不同的字体,unicode 是不同的。) unicode 我只显示字体 A 的损坏文本。
    • 只有一个 Unicode。什么是字体 B?也许你有一个“视觉”的非 Unicode 符号字体(比如 Wingdings,除了每个字母都显示为预渲染的组合天体字形而不是古怪的形状)?在这种情况下,您可以通过自己进行从 Unicode 到任意符号的映射来显示正确的字形,但这会很痛苦,而且文本不会与系统上的任何其他内容进行互操作。
    【解决方案2】:

    根据定义,JSON 必须以 UTF-8 编码。

    当您谈论字体时,我假设您在谈论编码 - 文本本身并没有指定将使用哪种字体在用户屏幕上呈现它。最好的选择是始终以 UTF-8 存储您的数据,这样您就不必重新编码任何内容。默认情况下,所有开源数据库(PostgreSQL、MySQL 等)都提供了一种以 UTF-8 存储文本的方法。此外,Android 默认对所有字符串(JSON、XML 等)使用 UTF-8。

    如果您的数据以某些旧编码(如 CP1250 或 CP1251)进行编码,则应在创建 JSON 之前使用适当的方法将该编码转换为 UTF-8。几乎每个平台都提供了这种转换的方法。其中一个流行的库是iconv(它具有 PHP、C/C++ 等的绑定),但我相信还有许多其他方法可以实现这一点。

    【讨论】:

    • 是的,我的数据以 UTF8_General_ci 格式存储。我只有 unicode 值的问题。例如,对于某些单词,JSON 编码给了我像 \u0930\u093e\ 这样的值。相反,我希望在“Font ABC”中使用这个词,其对应的 unicode 将是“v”。
    • 似乎 JSON 编码器决定使用代理对编码。你能准确说出你的问题词是什么吗?从 MySQL 方面看它是什么样的,或者更好的是它的确切字节序列是什么?
    • 假设我的话是पूर्ण。这个词很好地存储在我的数据库中,也很好地显示在我的网页中。 JSON 编码给了我像 \u0930\u9876 这样的 unicode 值。但是,当在我的应用程序中使用 Font ABC 时,此代码会以损坏的形式显示,例如 प् ुर् 。如前所述,Font XYZ 将在应用程序中显示这个词 all good,其 unicode 值如 'r 5 h em'。
    • 您的 JSON 编码器似乎坏了。我可以用 UTF-8 中的内容创建 test.json 就好了:{"x": "पूर्ण"},hexdump:7B 22 78 22 3A 20 22 E0 A4 AA E0 A5 82 E0 A4 B0 E0 A5 8D E0 A4 A3 22 7D
    • 为什么不呢?但同样,UTF-8 或任何其他编码中的文本没有“字体”之类的东西。字体是一组简单编号的象形图,可用于在视觉上呈现您的文本。该集合可能缺少一些“数字”,因此将无法显示某些字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2011-12-10
    相关资源
    最近更新 更多