字符串计算问题,高分悬赏

一朝春尽红颜老 2010-08-02 05:44:10
字符串:ESPRINET IBÉRICA S.L.U.

在SQL Server2008里面计算长度是23个字符,select LEN('ESPRINET IBÉRICA S.L.U.')

在C#里面计算也是23个字符:
int len = System.Text.Encoding.Default.GetByteCount("ESPRINET IBÉRICA S.L.U.");

VB中亦是如此,23:
Len(Trim(("ESPRINET IBÉRICA S.L.U.")

但是实际上是24个字符,因为欧文É要占到两位,在Notepad++和Ultraedit都显示的是24个字符。


请教高人如何在C#和VB中计算到正确的字符数24个。

...全文
162 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinv19shi 2010-08-03
  • 打赏
  • 举报
回复
utf-8
微醺_zZ 2010-08-03
  • 打赏
  • 举报
回复
如果你要VB.NET,楼上是正解
兔子-顾问 2010-08-03
  • 打赏
  • 举报
回复
        Dim bytes As Byte() = System.Text.Encoding.Default.GetBytes(你的字符串)
Dim bytes2 As Byte() = System.Text.Encoding.Convert(System.Text.Encoding.Default, System.Text.Encoding.UTF8, bytes)
'bytes2.Length就是长度()
Dim result As String = System.Text.Encoding.UTF8.GetString(bytes2)
'result就是转换后的()
  • 打赏
  • 举报
回复
明白了,用UTF8的编码就可以.

还是要请教的是:在VB中使用哪个函数呢,StrConv()不行,没有UTF8的编码格式.
yihong2000 2010-08-03
  • 打赏
  • 举报
回复
Dim bytes As Byte() = System.Text.Encoding.Default.GetBytes(你的字符串)
Dim bytes2 As Byte() = System.Text.Encoding.Convert(System.Text.Encoding.Default, System.Text.Encoding.UTF8, bytes)
'bytes2.Length就是长度()
Dim result As String = System.Text.Encoding.UTF8.GetString(bytes2)
'result就是转换后的()
wuyq11 2010-08-02
  • 打赏
  • 举报
回复
换其他编码
Neo_GYH 2010-08-02
  • 打赏
  • 举报
回复
我想原因是这样的,在vs当中,默认的情况是unicode或者utf-8的格式。如果你把“'ESPRINET IBÉRICA S.L.U.” 粘贴到其他的文本软件当中,可能会出现编码格式的改变。或者那个文本软件不能识别当前字符,所以才会出现与vs字符不一样的问题。尝试一下调整相同的编码格式文本。再试验一下。
Roy99 2010-08-02
  • 打赏
  • 举报
回复

Console.WriteLine(System.Text.Encoding.UTF8.GetByteCount("ESPRINET IBÉRICA S.L.U."));

楼主的计算机环境可能默认字符集是别的吧
int len = System.Text.Encoding.Default.GetByteCount("ESPRINET IBÉRICA S.L.U.");在我这里也是24
hyblusea 2010-08-02
  • 打赏
  • 举报
回复
我得到的是24个字符

byte[] b = System.Text.Encoding.Default.GetBytes("ESPRINET IBÉRICA S.L.U.");
poloyzhang 2010-08-02
  • 打赏
  • 举报
回复
(2) 在Program.cs文件的顶部添加下面的using指令:

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

(3) 在Main()方法中添加下面的代码:

static void Main(string[] args)

{

byte[] byData = new byte[100];

char[] charData = new Char[100];


try

{

FileStream aFile = new FileStream("../../Program.cs",FileMode.Open);

aFile.Seek(135,SeekOrigin.Begin);

aFile.Read(byData,0,200);

}

catch(IOException e)

{

Console.WriteLine("An IO exception has been thrown!");

Console.WriteLine(e.ToString());

Console.ReadKey();

return;

}


Decoder d = Encoding.UTF8.GetDecoder();

d.GetChars(byData, 0, byData.Length, charData, 0);


Console.WriteLine(charData);

Console.ReadKey();

}
段传涛 2010-08-02
  • 打赏
  • 举报
回复
这个 换成二进制 或者 加码
例如
string xx =Server.UrlEncode( usname);
再计算程度
解 Server.UrlDecode
poloyzhang 2010-08-02
  • 打赏
  • 举报
回复
utf8编码格式读取.
linwanhai 2010-08-02
  • 打赏
  • 举报
回复
字符编码改成 utf-8 就行
Flow_Cloud 2010-08-02
  • 打赏
  • 举报
回复
楼主很细心啊,坐等答 ——案
fancy967 2010-08-02
  • 打赏
  • 举报
回复
UTF8?

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧