我利用VB读取ini文件后出现这样的问题ini文件[mycms]00=mysoft
01=我的软件
02=best当我读取01,02,03的值后连续输出,Response.write  str1 & str2 & str3,发现无法输出第三个值.但是,当我分别输出 
Response.write  str1 
Response.write  str2 
Response.write  str3 
一切正常,
后来发现如果我把01的值改为英文,则可以连续输出Response.write  str1 & str2 & str3请问为什么不可以连续输出含中文的呢

解决方案 »

  1.   

    那是因为你的ini文件读取有问题。str2取长了,串后面含有vbNullChar。
      

  2.   

    找到原因了,这个和ini无关。原因是取得的字符串中含有chr(0),将他转化掉就好了也就是说response.write chr(0) & "任意变量、常量"
    都不会输出chr(0)后面的值chr(0)好像有截断功能,高手们可以讨论啊!!!
      

  3.   

    chr(0)好像有截断功能
    ----------------------
    感觉不是,可能是字符串太长(包含多个chr(0)),没有显示完全吧,只取有效的字符显示就可以:
    str1 = Left(str1, InStr(str1, Chr(0)) - 1)
    str2 = Left(str2, InStr(str2, Chr(0)) - 1)
    str3 = Left(str3, InStr(str3, Chr(0)) - 1)
      

  4.   

    现在问题是 response.write chr(0) & "任意变量、常量" 为什么这个输出的结果是空呢是否能说明chr(0)具有截断的功能
      

  5.   

    呵呵!这不是新鲜事物,前面就说过你的问题所在,是因为vbNullChar(就是你说的Chr(0))在做怪!因为文本的输出是以vbNullChar做为文本结束的标志!我们与API打交道常会收到它们传来的LPSTR型字符串,它与BSTR不同,没有表示串长的头部,它就是以一个&H0做为文本内容的结束标志。所以在接收API字符串时我们要通过查找vbNullChar来确定文本的长度,而不是根据API返回值来截取文本内容,因为VB对API返回的Byval字符串总是自动进行Unicode转换,在遇到中文时,返回值的长度就会大于VB的Unicode串长度,所以你的str2尾部必然会出现vbNullChar。所以我说是你的INI读取方法有问题,不知,这样表述,你是否看明白了?
      

  6.   

    我在这个板块下发的另外一个关于ini的问题,希望给予解答再请教一个ini的问题 
    http://community.csdn.net/Expert/TopicView1.asp?id=4642049