a.substring(0.20);
这样显示的时候会出问题,不能把中国显示出来
有没有更简单的方法将这个转成正确的中文。前提是不知道中文字符有几个
13 个解决方案
#1
关注
#2
a.Substring(0,2)
#3
a.Substring(0,2)
#4
这个我知道,问题是我已经做了一次substring了 比如说string b=a.substring(0,20)了。我要在b的基础上把中文字符读出来,而已中文字符有几个都不知道,不一定是两个
#5
没处理过这种问题,定一下
#6
string保存的是unicode,不会显示中文错误,楼主是不是想找出string中的中文字符?
CharEnumerator ce = s.GetEnumerator();
while(ce.MoveNext())
{
Console.WriteLine(char.GetUnicodeCategory(ce.Current));
}
中文是OtherLetter,如果string里还有其它语言字符,只能获取u值判断了
CharEnumerator ce = s.GetEnumerator();
while(ce.MoveNext())
{
Console.WriteLine(char.GetUnicodeCategory(ce.Current));
}
中文是OtherLetter,如果string里还有其它语言字符,只能获取u值判断了
#7
string txtstr = "中adfs国 dssd人";
string returnstr = "" ;
for (int strint = 0 ; strint < txtstr.Length ; strint++)
{
string str = txtstr.Substring( strint , 1 );
//ASCIIEncoding ascii = new ASCIIEncoding();
System.Text.UTF8Encoding ascii = new System.Text.UTF8Encoding();
Byte[] encodedBytes = ascii.GetBytes(str);
string car = encodedBytes[0].ToString();
int i = encodedBytes.Length;
if(i>1) //1位的才是ASCII码
returnstr = returnstr + str ;
}
结果 returnstr = "中国人"
不知楼主是不是这个意思
string returnstr = "" ;
for (int strint = 0 ; strint < txtstr.Length ; strint++)
{
string str = txtstr.Substring( strint , 1 );
//ASCIIEncoding ascii = new ASCIIEncoding();
System.Text.UTF8Encoding ascii = new System.Text.UTF8Encoding();
Byte[] encodedBytes = ascii.GetBytes(str);
string car = encodedBytes[0].ToString();
int i = encodedBytes.Length;
if(i>1) //1位的才是ASCII码
returnstr = returnstr + str ;
}
结果 returnstr = "中国人"
不知楼主是不是这个意思
#8
http://dotnet.aspx.cc/ShowDetail.aspx?id=48596EF2-8C16-47EE-1CD3-174E44FA9E24
这里有相关的操作,估计能帮你。
这里有相关的操作,估计能帮你。
#9
如果有间隔符号的话,可以试试利用间隔符号处理
如果没有的话,以字节的方式判断字节长度吧
如果没有的话,以字节的方式判断字节长度吧
#10
其实就是怎么把已经转成string流的中文字符再转回中文
#11
gz
#12
其实是我说的有问题
应该是问用readline从文件里面读取的string(里面有中文),经过一系列如substring的操作。之后怎么把这个string里面的中文字符以中文的形式写入另外一个文件
应该是问用readline从文件里面读取的string(里面有中文),经过一系列如substring的操作。之后怎么把这个string里面的中文字符以中文的形式写入另外一个文件
#13
楼主应该看看我的回复,如果用foreach加上char.GetUnicodeCategory()速度又快,又能找出char的类别。substring()会创建大量temporary string对象,对于长字符串,大于64k的速度可以慢上一个数量级。
而且用字节数目判断有错误,\u03a0,这是pi的符号,他也占2字节。
而且用字节数目判断有错误,\u03a0,这是pi的符号,他也占2字节。
#1
关注
#2
a.Substring(0,2)
#3
a.Substring(0,2)
#4
这个我知道,问题是我已经做了一次substring了 比如说string b=a.substring(0,20)了。我要在b的基础上把中文字符读出来,而已中文字符有几个都不知道,不一定是两个
#5
没处理过这种问题,定一下
#6
string保存的是unicode,不会显示中文错误,楼主是不是想找出string中的中文字符?
CharEnumerator ce = s.GetEnumerator();
while(ce.MoveNext())
{
Console.WriteLine(char.GetUnicodeCategory(ce.Current));
}
中文是OtherLetter,如果string里还有其它语言字符,只能获取u值判断了
CharEnumerator ce = s.GetEnumerator();
while(ce.MoveNext())
{
Console.WriteLine(char.GetUnicodeCategory(ce.Current));
}
中文是OtherLetter,如果string里还有其它语言字符,只能获取u值判断了
#7
string txtstr = "中adfs国 dssd人";
string returnstr = "" ;
for (int strint = 0 ; strint < txtstr.Length ; strint++)
{
string str = txtstr.Substring( strint , 1 );
//ASCIIEncoding ascii = new ASCIIEncoding();
System.Text.UTF8Encoding ascii = new System.Text.UTF8Encoding();
Byte[] encodedBytes = ascii.GetBytes(str);
string car = encodedBytes[0].ToString();
int i = encodedBytes.Length;
if(i>1) //1位的才是ASCII码
returnstr = returnstr + str ;
}
结果 returnstr = "中国人"
不知楼主是不是这个意思
string returnstr = "" ;
for (int strint = 0 ; strint < txtstr.Length ; strint++)
{
string str = txtstr.Substring( strint , 1 );
//ASCIIEncoding ascii = new ASCIIEncoding();
System.Text.UTF8Encoding ascii = new System.Text.UTF8Encoding();
Byte[] encodedBytes = ascii.GetBytes(str);
string car = encodedBytes[0].ToString();
int i = encodedBytes.Length;
if(i>1) //1位的才是ASCII码
returnstr = returnstr + str ;
}
结果 returnstr = "中国人"
不知楼主是不是这个意思
#8
http://dotnet.aspx.cc/ShowDetail.aspx?id=48596EF2-8C16-47EE-1CD3-174E44FA9E24
这里有相关的操作,估计能帮你。
这里有相关的操作,估计能帮你。
#9
如果有间隔符号的话,可以试试利用间隔符号处理
如果没有的话,以字节的方式判断字节长度吧
如果没有的话,以字节的方式判断字节长度吧
#10
其实就是怎么把已经转成string流的中文字符再转回中文
#11
gz
#12
其实是我说的有问题
应该是问用readline从文件里面读取的string(里面有中文),经过一系列如substring的操作。之后怎么把这个string里面的中文字符以中文的形式写入另外一个文件
应该是问用readline从文件里面读取的string(里面有中文),经过一系列如substring的操作。之后怎么把这个string里面的中文字符以中文的形式写入另外一个文件
#13
楼主应该看看我的回复,如果用foreach加上char.GetUnicodeCategory()速度又快,又能找出char的类别。substring()会创建大量temporary string对象,对于长字符串,大于64k的速度可以慢上一个数量级。
而且用字节数目判断有错误,\u03a0,这是pi的符号,他也占2字节。
而且用字节数目判断有错误,\u03a0,这是pi的符号,他也占2字节。