当前位置: 首页 > news >正文

企业网站建站的专业性原则是指网站信息内容应该体现建站目的和目标群体重庆排名seo公司

企业网站建站的专业性原则是指网站信息内容应该体现建站目的和目标群体,重庆排名seo公司,做棋牌网站建设多少钱,webapp开发在Java中,由于字符串可能包含多字节字符(如中文),直接按字节长度截取可能会导致乱码或截取不准确的问题。以下是几种按字节长度截取字符串的方法: 方法一:使用String的getBytes方法 java public static String substringByBytes(…

在Java中,由于字符串可能包含多字节字符(如中文),直接按字节长度截取可能会导致乱码或截取不准确的问题。以下是几种按字节长度截取字符串的方法:

方法一:使用String的getBytes方法
java
public static String substringByBytes(String str, int byteLength) {
    if (str == null || str.isEmpty() || byteLength <= 0) {
        return "";
    }
    
    byte[] bytes = str.getBytes();
    if (byteLength >= bytes.length) {
        return str;
    }
    
    // 处理截取位置可能是多字节字符的情况
    int len = 0;
    for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        len += (c <= 255) ? 1 : 2; // 假设非ASCII字符占2字节
        
        if (len > byteLength) {
            return str.substring(0, i);
        } else if (len == byteLength) {
            return str.substring(0, i + 1);
        }
    }
    return str;
}
方法二:指定字符编码处理
java
public static String substringByBytes(String str, int byteLength, String charsetName) 
        throws UnsupportedEncodingException {
    if (str == null || str.isEmpty() || byteLength <= 0) {
        return "";
    }
    
    byte[] bytes = str.getBytes(charsetName);
    if (byteLength >= bytes.length) {
        return str;
    }
    
    // 根据编码创建新的字符串
    return new String(bytes, 0, byteLength, charsetName);
}
方法三:更精确的字符编码处理
java
public static String substringByBytes(String str, int maxBytes, String charsetName) 
        throws UnsupportedEncodingException {
    if (str == null || charsetName == null || charsetName.isEmpty()) {
        return str;
    }
    
    byte[] bytes = str.getBytes(charsetName);
    if (bytes.length <= maxBytes) {
        return str;
    }
    
    // 处理截断可能导致的半个字符问题
    int nBytes = 0;
    int i = 0;
    for (; i < str.length(); i++) {
        char c = str.charAt(i);
        int charBytes = String.valueOf(c).getBytes(charsetName).length;
        if (nBytes + charBytes > maxBytes) {
            break;
        }
        nBytes += charBytes;
    }
    
    return str.substring(0, i);
}
使用示例
java
public static void main(String[] args) {
    String testStr = "你好,Java世界!Hello World!";
    
    try {
        System.out.println(substringByBytes(testStr, 10)); // 输出:你好,J
        System.out.println(substringByBytes(testStr, 15, "UTF-8")); // 输出:你好,Java
        System.out.println(substringByBytes(testStr, 20, "GBK")); // 输出:你好,Java世界!
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
}
注意事项
不同编码下字符占用的字节数不同:

UTF-8编码中,中文通常占3字节

GBK编码中,中文占2字节

ISO-8859-1编码中,所有字符占1字节

截取时需要考虑编码的字节边界,避免截断多字节字符导致乱码

性能考虑:对于大字符串频繁截取,建议缓存字节数组或使用更高效的算法

对于表情符号等特殊字符,可能需要额外处理

http://www.cadmedia.cn/news/5793.html

相关文章:

  • 网站排名不稳定怎么办南昌百度推广联系方式
  • 怎么建设自己的卡盟网站浙江seo外包
  • 襄垣城乡建设管理局的网站关键字c语言
  • 茶叶网站建设公司帆软社区app
  • b2c的盈利模式是什么seo推广公司排名
  • 百度短链接生成器福州seo建站
  • 临沂建设局网站质量三监督怎样创建自己的电商平台
  • 网站建设 每年费用企业邮箱登录
  • 网站规划与建设论文自动seo系统
  • 只做旧房翻新的装修公司seo1新地址在哪里
  • 郑州市政府网站官网百度最新财报
  • 经典wordpress网站备案查询平台官网
  • 免费模板下载个人简历陕西seo推广
  • 衡水企业网站建设价格seo推广排名软件
  • 做网站四百全包小红书seo关键词优化多少钱
  • 同江佳木斯网站建设指数基金定投技巧
  • 济南企业建站哪家做的好建网站的软件
  • 交友视频网站建设百度网页怎么制作
  • 湖北平台网站建设哪家好软文发布平台哪个好
  • 淘宝网站基础建设 托管福州seo推广优化
  • 南京网络推广网站建设公司抖音seo排名
  • 江苏网站建设价格低广州最新疫情最新消息
  • 九江茶叶网站建设中国网评中国网评
  • 网站收录情况百度一下就知道首页
  • 网站建设的结构做一套二级域名网站怎么做
  • 深圳网页设计网站制作百度快速排名软件原理
  • 2w网站2w网站建设建设网站seo收录工具
  • 湖北省网站建设卖友情链接赚钱
  • 政府网站标准化建设邯郸seo优化公司
  • 找个网站你知道的1000个关键词