怎么样截取字符才能使中英文混合的字符不出现乱码? 比如我要截取4个汉字长度的字符123456 //如果是纯数字的话应该截取 "1234“中文测试 //如果是中文的话截取 “中文"字符串中可能还含有空格等其他符号,如何才能使截取字符时不出现乱码? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接用substring()就可以String str = "ABC中文abc";str.length() = 8;所以你直接使用str.substring(2,6)=C中文a; substring()不行,如果我的字符串是“123456789” 截取四位是 “1234”如果是字符串是“测试字符测试” 截取四位是 ”测试字符“其中”测试字符"的占空间的长度是“1234”的两倍,我要的效果是无论有无数字或其他字符,截取出来的长度是一样才行。 所有中文的 ascii值是小于零的 你可以用 ascii (char) 获得一个字符的ascii,然后再做判断 哦 不好意思 偶以为我进的是PB社区了 PB里获取 ascii的函数才是ascii (char) 楼主的概念搞混了...你说的长度是字节数但是String.substring()是以char来度量的,所以String.substring()是可以用的。中文的一个字也是一个char,拉丁字母的一个字母也是一个char。 下面的代码处理截断byte数为14的情况,当最后若干位byte会导致某个字符不完整的话,放弃这个字符.int length=14;int i=0;for(;i<str.length();){ char c=str.charAt(i); length-=(c+"").getBytes().length; if(length==0)break; else if(length<0){i=i-1;break;}//这时候直接break,将不放弃这个字符而是增加byte截断长度 else {i++;}}out.print(str.substring(0,i)); 上面的代码有一处错:最后out.print之前应该判断i!=str.length. String str = "abcdefgg"; byte[] by = str.getBytes(); String str2 = new String(by,0,8); System.out.println(str2); 参阅这里的程序http://www.cjsdn.net/post/view?bid=28&id=111075&tpg=1&ppg=1&sty=1&age=0#111075 实验成功!package com.rcom10002;import java.util.regex.*;public class Demo { public static void main(String args[]) { String str = "我就B信B能解决了;试验!"; System.out.print((new Demo()).getSubString(str, 0, 4)); } public String getSubString(String SubjectString, int start, int length ){ String ResultString = null; try { Pattern regex = Pattern.compile("^.{" + start + "}(.{" + length + "}).*$"); Matcher regexMatcher = regex.matcher(SubjectString); //test System.out.println(regexMatcher.matches()); try { ResultString = regexMatcher.replaceAll("$1"); } catch (IllegalArgumentException ex) { // Syntax error in the replacement text (unescaped $ signs?) } catch (IndexOutOfBoundsException ex) { // Non-existent backreference used the replacement text } } catch (PatternSyntaxException ex) { // Syntax error in the regular expression } return ResultString; }} jsp页面保存到数据库有乱码解决方法Jsp+tomcat+bean中文乱码问题解决方法javabean中参数有乱码1) 所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等2) 在应用服务器中的server.xml方件中找到设置服务器端口的行,一般是这样开头:”<Connector port="8080"”,3) 在找到的行"<Connector"开头的字符串后加上:URIEncoding="UTF-8" ,保存文件--------------------------------------------------------------------------jsp页面有乱码解决方法 所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等 <%@ page contentType="text/html; charset=UTF-8">--------------------------------------------------------------------------jsp单个中文参数乱码解决方法 用这个转换一下: <%!String trans(String chi) { string result =null; byte temp[]; temp=chi.getBytes("iso=8859-1"); result= new String(temp); } %>或者直接这样: <% request.setCharacterEncoding("UTF-8"); out.println(request.getParameter("参数ID") %>-------------------------------------------------------------------------- 请教个关于静态方法的问题 请问哪里可以下载到马士兵的JavaScript视频? java 集合 hashcode 麻烦大家帮我看看,实在是搞不过了 java中有没有像js中eval函数的方法? Socket如何传递对象? load:class xxx not found 设置classpath时可以一次设置多个jar吗,比如在这些jar在d:\lib文件夹中,可以直接设置classpath=d:\lib吗 求助:程序运行不了 SQL2K中SQL语句执行异常? 如何解决jxls乱码中文问题 如何从html文本中提取内容?
String str = "ABC中文abc";
str.length() = 8;
所以你直接使用str.substring(2,6)=C中文a;
如果我的字符串是“123456789” 截取四位是 “1234”
如果是字符串是“测试字符测试” 截取四位是 ”测试字符“
其中”测试字符"的占空间的长度是“1234”的两倍,我要的效果是无论有无数字或其他字符,截取出来的长度是一样才行。
PB里获取 ascii的函数才是ascii (char)
你说的长度是字节数
但是String.substring()是以char来度量的,所以String.substring()是可以用的。
中文的一个字也是一个char,拉丁字母的一个字母也是一个char。
int length=14;
int i=0;
for(;i<str.length();)
{
char c=str.charAt(i);
length-=(c+"").getBytes().length;
if(length==0)break;
else if(length<0){i=i-1;break;}//这时候直接break,将不放弃这个字符而是增加byte截断长度
else {i++;}
}
out.print(str.substring(0,i));
byte[] by = str.getBytes();
String str2 = new String(by,0,8);
System.out.println(str2);
http://www.cjsdn.net/post/view?bid=28&id=111075&tpg=1&ppg=1&sty=1&age=0#111075
String str = "我就B信B能解决了;试验!";
System.out.print((new Demo()).getSubString(str, 0, 4));
}
public String getSubString(String SubjectString, int start, int length ){
String ResultString = null; try {
Pattern regex = Pattern.compile("^.{" + start + "}(.{" + length + "}).*$");
Matcher regexMatcher = regex.matcher(SubjectString);
//test
System.out.println(regexMatcher.matches());
try {
ResultString = regexMatcher.replaceAll("$1");
} catch (IllegalArgumentException ex) {
// Syntax error in the replacement text (unescaped $ signs?)
} catch (IndexOutOfBoundsException ex) {
// Non-existent backreference used the replacement text
}
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}
return ResultString;
}}
1) 所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等
2) 在应用服务器中的server.xml方件中找到设置服务器端口的行,一般是这样开头:”<Connector port="8080"”,
3) 在找到的行"<Connector"开头的字符串后加上:URIEncoding="UTF-8" ,保存文件
--------------------------------------------------------------------------
jsp页面有乱码解决方法 所有的jsp页面指定字符编码方式,如:Charest=gb2312,Charest=UTF-8等等
<%@ page contentType="text/html; charset=UTF-8">
--------------------------------------------------------------------------
jsp单个中文参数乱码解决方法 用这个转换一下:
<%!String trans(String chi)
{
string result =null;
byte temp[];
temp=chi.getBytes("iso=8859-1");
result= new String(temp);
}
%>
或者直接这样:
<%
request.setCharacterEncoding("UTF-8");
out.println(request.getParameter("参数ID")
%>
--------------------------------------------------------------------------