You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从英印sqlite数据库取值并在控制台正确打印印地语释义文本

问题原因及解决方案

根因分析

你使用的SQLite字典库中的印地语释义未存储标准Unicode编码的天城文内容,存储的是定制字体专属的ASCII转写字符串:你加载的印地语Typeface内部做了ASCII字符到印地语字形的自定义映射,所以TextView设置对应字体后可以渲染出正确的印地语文本;而System.out.println只会输出原始存储的ASCII字符串,没有对应的字体映射逻辑,因此输出内容看起来是乱码。

解决方案

  • 方案1:仅需控制台输出场景
    先整理当前所用印地语定制字体的字符映射规则,构建ASCII转写字符到标准Unicode天城文的映射字典,转换后再打印即可,示例逻辑如下:
    // 先根据字体映射规则补全所有对应关系,以下为示例映射
    Map<String, String> transToUnicodeMap = new HashMap<>();
    transToUnicodeMap.put("lR;", "प्र");
    transToUnicodeMap.put("kHkklh", "कथित");
    transToUnicodeMap.put("]", " ");
    // 省略其余映射规则
    
    // 自定义转换方法完成映射替换
    private String convertToUnicode(String transStr, Map<String, String> map) {
        // 按规则替换所有转写字段为Unicode编码
        for (Map.Entry<String, String> entry : map.entrySet()) {
            transStr = transStr.replace(entry.getKey(), entry.getValue());
        }
        return transStr;
    }
    
    // 转换后打印即可输出正常印地语
    String hindiMeaning = "lR;kHkklh]diViw.kZ]";
    String unicodeHindi = convertToUnicode(hindiMeaning, transToUnicodeMap);
    System.out.println(unicodeHindi);
    
  • 方案2:全场景通用改造
    批量转换SQLite库中所有印地语释义为标准Unicode编码后重新存储,后续所有业务场景(包括打印、跨端使用、内容分享等)都不需要依赖定制字体,兼容性更强。

注意:不要尝试通过修改控制台编码解决该问题,原始数据本身不是Unicode编码的印地语文本,调整编码无法生效。

内容的提问来源于stack exchange,提问作者Mahadi Hasan Sunny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 20:33:03