zoukankan      html  css  js  c++  java
  • 【android】 中文URL资源找不到的问题

    在博客园安卓客户端时,遇到过中文资源找不到的问题

    背景:在使用PICASSO的时候,遇到过中文路径加载失败。比如

    https://images0.cnblogs.com/news_topic/携程.jpg

    picasso就加载失败

    我们需要用一个方法把中文字符转换为base64格式,试过安卓原生的方法,效果不理想

    我们期望的结果是这样的

    https://images0.cnblogs.com/news_topic/%E6%90%BA%E7%A8%8B.jpg

    简单讲,就是只转换中文,为了性能,如果路径不包含中文字符串,则提前返回

    因此有了下面的函数,使用时直接把url都用该方法装饰一遍,中文路径问题就轻松愉快的解决了。

     private static final String HEX_STRING = "0123456789ABCDEF";
    
    /**
         * 把中文字符转换为带百分号的浏览器编码
         *
         * @param word
         * @return
         */
        public static String toBrowserCode(String word) {
            byte[] bytes = word.getBytes();
    
            //不包含中文,不做处理
            if (bytes.length == word.length())
                return word;
    
            StringBuilder browserUrl = new StringBuilder();
            String tempStr = "";
    
            for (int i = 0; i < word.length(); i++) {
                char currentChar = word.charAt(i);
    
                //不需要处理
                if ((int) currentChar <= 256) {
    
                    if (tempStr.length() > 0) {
                        byte[] cBytes = tempStr.getBytes();
    
                        for (int j = 0; j < cBytes.length; j++) {
                            browserUrl.append('%');
                            browserUrl.append(HEX_STRING.charAt((cBytes[j] & 0xf0) >> 4));
                            browserUrl.append(HEX_STRING.charAt((cBytes[j] & 0x0f) >> 0));
                        }
                        tempStr = "";
                    }
    
                    browserUrl.append(currentChar);
                } else {
                    //把要处理的字符,添加到队列中
                    tempStr += currentChar;
                }
            }
            return browserUrl.toString();
        }
  • 相关阅读:
    mysql在虚拟机上重启命令
    mysql最佳优化经验
    mysql索引优化面试题
    Java 23种设计模式详尽分析与实例解析之三--行为型模式
    几种经典的数据排序及其Java实现
    os内存使用管理之linux篇
    C++基础学习笔记----第四课(函数的重载、C和C++的相互调用)
    os内存使用管理之unix-AIX篇
    Spring3.0 入门进阶(1):从配置文件装载Bean
    网上销售第二天有感
  • 原文地址:https://www.cnblogs.com/kimmy/p/4554741.html
Copyright © 2011-2022 走看看