各位大虾救救小弟!!asp下utf-8编码问题

csyt 2004-11-15 05:04:32
为什么我的utf-8编码的网页在显示奇数个汉字时总显示字符串错误,即:如字符串"XXX"后面的那个"总是不显示,从而导致种种错误。但是若在字符串最后加一个空格则无此问题,请问如何解决?是否要都加空格?
...全文
191 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zenyivon 2004-11-17
  • 打赏
  • 举报
回复
加上
<% CODEPAGE=65001 %>
再把 ASP 文件用记事本另存为 utf-8 格式。
  • 打赏
  • 举报
回复
直接可以考过去用了。我前不久才用过。保证没问题的~~
  • 打赏
  • 举报
回复
把那些汉字在页面间传的时候进行编码转化。。UTF-8存到数据库的时候好象也会出乱码的吧??
给你我用过的两个函数,一个是转到UTF-8(VBS的),一个是转回来到GB2312(JS的)~~

Function toUTF8(szInput)
Dim wch, uch, szRet
Dim x
Dim nAsc, nAsc2, nAsc3

If szInput = "" Then
toUTF8 = szInput
Exit Function
End If
For x = 1 To Len(szInput)
wch = Mid(szInput, x, 1)
nAsc = AscW(wch)
If nAsc < 0 Then nAsc = nAsc + 65536

If (nAsc And &HFF80) = 0 Then
szRet = szRet & wch
Else
If (nAsc And &HF000) = 0 Then
uch = "%" & Hex(((nAsc \ 2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80)
szRet = szRet & uch
Else
uch = "%" & Hex((nAsc \ 2 ^ 12) Or &HE0) & "%" & _
Hex((nAsc \ 2 ^ 6) And &H3F Or &H80) & "%" & _
Hex(nAsc And &H3F Or &H80)
szRet = szRet & uch
End If
End If
Next

toUTF8 = szRet
End Function
'=====================================================================(↓javascript的.)
function revertUTF8(szInput){
var x,wch,wch1,wch2,uch="",szRet="";
for (x=0; x<szInput.length; x++){
if (szInput.charAt(x)=="%") {
wch =parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);
if (!wch) {
break;
}
if (!(wch & 0x80)) {
wch = wch;
} else if (!(wch & 0x20)){
x++;
wch1 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);
wch = (wch & 0x1F)<< 6;
wch1 = wch1 & 0x3F;
wch = wch + wch1;
} else {
x++;
wch1 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);
x++;
wch2 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);
wch = (wch & 0x0F)<< 12;
wch1 = (wch1 & 0x3F)<< 6;
wch2 = (wch2 & 0x3F);
wch = wch + wch1 + wch2;
}
szRet += String.fromCharCode(wch);
} else {
szRet += szInput.charAt(x);
}
}
return(szRet);
}
csyt 2004-11-16
  • 打赏
  • 举报
回复
up
bluemoon0001 2004-11-16
  • 打赏
  • 举报
回复
对,我曾经也遇到过这样的问题,但至今没能解决,帮你顶;我遇到的是我做一个表单,页面代码为utf-8,当我输入偶数个汉字提交的时候一切正常,当我输入奇数个汉字的时候就出现了乱码。
csyt 2004-11-16
  • 打赏
  • 举报
回复
晕,rs(1)中的是第二个字段,我在unicode字符集下用一个全角空格就可以正常显示,但是像2004-11-16这样的字符串中含有:"-" 这种字符也不能正常显示,总不能把"-'改成"-"吧,这样时间格式就不对了。我改怎么办啊?
csyt 2004-11-16
  • 打赏
  • 举报
回复
up
lincai 2004-11-16
  • 打赏
  • 举报
回复
<td><%=rs(1)%></td>
1是什么?
不是name吗?
csyt 2004-11-15
  • 打赏
  • 举报
回复
是access数据库,没有varchar和nvarchar类型的把
goldrockey 2004-11-15
  • 打赏
  • 举报
回复
你表A中的name字段是什么类型的,varchar,还是nvarchar呢?
dipperstudio 2004-11-15
  • 打赏
  • 举报
回复
不用UFT-8还行?改成GB2312
csyt 2004-11-15
  • 打赏
  • 举报
回复
up
csyt 2004-11-15
  • 打赏
  • 举报
回复
就是要解决:在一个utf-8的页面中用一个form提交unicode数据(汉字),再在另一个也是utf-8编码的页面中显示出来
hqcsx 2004-11-15
  • 打赏
  • 举报
回复
看了半天也没有明白你要解决什么问题.
csyt 2004-11-15
  • 打赏
  • 举报
回复
我的代码:
.....
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<%
conn.execute "insert into a (name) values('搭')"
response.Write("success!")
set rs=server.CreateObject("adodb.recordset")
rs.open "select top 1 * from a order by id asc",conn,1,3
%>
<body>
<table width="200" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><%=rs(1)%></td>
</tr>
</table>
.....
csyt 2004-11-15
  • 打赏
  • 举报
回复
呵呵,各位达人帮帮小弟把.....

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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