【问题标题】:Android, mysql, and rendering non Latin Characters as well as Latin?Android,mysql,以及渲染非拉丁字符以及拉丁语?
【发布时间】:2011-04-15 12:16:39
【问题描述】:

这些方块是否代表汉字被转换为 unicode?

编辑:[这里我将带有数字的方块输入到帖子中,但它们没有呈现]

我想在 android 中显示时将其转回原始字符(或者让 mysql 仅将它们存储为中文字符而不是 unicode ???)

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);

调试时将字符串值显示为 "\u001a\u001a\u001a\u001a"

 byte[] bytes = chinesestringfromdatabase.getBytes();

把它变成 "[26, 26, 26, 26]"

String fresh = new String(bytes, "UTF-8");

然后这又变成了 编辑:[在这里我将带有数字的正方形输入到帖子中,但它们没有渲染]

我的手机可以显示中文。

MySQL 字符集:UTF-8 Unicode (utf8)

在输入我的问题时,我意识到也许我的字符集都错了。 我不知道我的问题是否与编码相关,或者它是否只是与设置相关,或者 php 是否无法处理字符集??

我想存储和呈现可能包含多种语言的多种语言字符集。

【问题讨论】:

    标签: java php mysql android unicode


    【解决方案1】:

    在这里,我将带有数字的方块输入到帖子中,但它们没有呈现

    对于“里面有数字的方块”,您的意思是否与您在使用 Firefox 浏览器浏览时在 Wikipedia homepage 底部某处看到的一些外来语言的意思相同? (在所有其他浏览器中——MSIE、Chrome、Safari 等——你只会看到空洞的方块)。

    如果为真,则仅表示没有可用于指示网络浏览器/查看器使用的字体中的那些字符的字形。

    我想存储和呈现可能包含多种语言的多种语言字符集。

    一直使用 UTF-8。请记住,MySQL 仅支持BMP Unicode 面板(每个字符最多 3 个字节),而不支持其他面板(每个字符 4 个字节)。所以SMP 面板(包含“特殊”CJK 字符)超出了 MySQL 的范围。

    参考文献

    【讨论】:

    • [附带问题 - 当你引用我的时候我如何引用你的话]“对于“里面有数字的正方形”,你的意思是不是和你在底部某处看到的一些异国语言的意思一样的 Wikipedia 主页,在使用 Firefox 浏览器浏览时?(在所有其他浏览器中 -MSIE、Chrome、Safari 等 - 你只会看到什么都没有说的空方块)。如果为真,那么它只是意味着没有可用于的字形指示网络浏览器/查看器使用的字体中的那些字符。”是的!
    • 发表评论 :) 那么,您需要安装正确的字体或指示网络浏览器/查看器使用不同的字体,您可以确定它的集合中有正确的字形.
    • 我已经进入原生安卓浏览器并复制了一些中文文本(作为测试),然后回到我的应用程序并将中文文本粘贴到 EditText 表单中(它们显示正确)并提交.从那里通过 httppost 将其发送到 php 文件,然后将其插入到 mysql 数据库中,然后读取该数据库并显示在 textview 中,该文本视图仅呈现方形字符。我假设没有这些中间步骤,如果我只是设置我的 onclicklistener 以将 textview 更改为等于 edittext 的内容,它将正确显示。
    • 我将尝试提取 edittext 使用的字体并将其应用到我的 textview,如果这不起作用,我将在资产中包含我自己的字体并尝试。好的...使用edittext中的字体(确实可以正确渲染中文字符)..我在gettext.toString()'ing edittext时调试并看到了唯一值,但是一旦从数据库返回,每个字符都包含一个通用字节值26 并且在检查时所有方块似乎都具有相同的值。字体可能是个问题,但也有一些东西正在剥离使这些非渲染字符独一无二的原因。
    【解决方案2】:

    方框里的数字是多少?我猜他们是001A?喜欢吗?

    (SO 通常会将它们过滤掉,因为它们是 ASCII 控制字符,通常在其他浏览器中不可见。)

    调试时将字符串值显示为“\u001a\u001a\u001a\u001a”

    很明显那里没有中文或任何文本要恢复。原始字符串中的所有信息内容都已丢失。

    虽然我同意您需要始终使用 UTF-8(对于 PHP,这意味着使用 UTF-8 <meta> 标记提供表单页面,使用 mysql_set_charset('utf8'),并使用 UTF-8 排序规则创建 MySQL 表),如果您以某种方式获得相同的控制字符而不是文本字符串,我认为您必须遇到比 UTF-8-vs-other-ASCII-compatible-encoding 更严重的损坏问题。

    【讨论】:

      猜你喜欢
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-26
      相关资源
      最近更新 更多