还有,运行在client side, 偶知道WinNT Server可以做,
别提这个Server.
别提这个Server.
解决方案 »
- javascript 向后台传递对象
- 调用Active控件的问题
- 用JS实现两个日期相减得出的天数,再乘一个数
- 菜鸟提问------
- **********请问关于js操作table的问题,马上揭贴************
- 搜索提示如何点击进入相关网站
- mytable.rows[intCount].style.backgroundcolor='#fdd5fa'; 这句怎么改变不了一行的颜色呢?
- 求算法
- 在 submit 按钮的 onClick 事件中调用 form 的 submit 方法,可是提交后的参数中却没有这个按钮[100分]
- js事件
- 我才开始学习作web程序,其中看到很多的地方都用到了jsp,现在想学开如何入手>>>>>
- 关于图层拖拽的问题
2、切换页面的语言,可在页面输出是做编码转换。但要自己用js去访问系统的dll,意义不大。
3、只有gb2312的一级字库是按拼音排序的(二级库按偏旁部首),所以若要拼音排序需解析系统的拼音输入法字典
这样做有两个缺点,一是需要访问客户机文件系统,二是仍然没有得到GBK编码。欢迎讨论。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<script>
document.write(encodeURI("中文"))
</script>
<form method=get action='codetest.htm'>
<input name=kkk value='中文' type=text>
<input type=submit value='submit'>
</form>
</body></html>
所以必须使用字典,现在所能见到的程序、控件包括ie本身都是通过查表的。况且查表是计算机的强项。
若需要对照表,请给我留言。
不知你看过相关的vb代码没有?是在ocx调用系统dll的。
我为什么还要自己做一个对照表加载进去,还得写个查表程序?
极为不爽。
写个ActiveX调用系统dll能行也好啊。
丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗地址栏出现:?kkk=%81@%81A%81B%81C%81D%81E%81F%81G%81H%81I%81J%81K%81L%81M%81N%81O%81P%81Q%81R%81S%81T%81U%81V%81W%81X%81Y%81Z%81%5B%81%5C好象很对号的说。 IE 用什么玩意给GET参数编码的啊?我听说人家Java在编码的时候可以写个参数如:encodeURI("中文测试","GBK");怎么JS就这么愚蠢的没有参数啊?
不可能,也无必要包容那么多功能。
还有就是16进制而已。
以下文字来自http://www.99net.net/study/prog/68103937.htm其中一句InputStreamReader (bin,"GBK"));
让偶很愤怒,他凭什么可以加参数!!!???!!!!
Java从一个byte流中读取一个字符串时,将把平台相关的byte转变为平台无关的Unicode字符串。在输出时Java将把Unicode字符串转变为平台相关的byte流,如果某个Unicode字符在某个平台上不存在,将会输出一个'?'。举个例子:在中文Windows中,Java读出一个"GB2312"编码的文件(可以是任何流)到内存中构造字符串对象,将会把GB2312编码的文字转变为Unicode编码的字符串,如果把这个字符串输出又将会把Unicode字符串转化为GB2312的byte流或数组:"中文测试"----->"\u4e2d\u6587\u6d4b\u8bd5"----->"中文测试"。
如下例程:
byte[] bytes = new byte[]{(byte)0xd6, (byte)0xd0, (byte)0xce, (byte)0xc4, (byte)0xb2, (byte)0xe2, (byte)0xca, (byte)0xd4};//GBK编码的"中文测试"
java.io.ByteArrayInputStream bin = new java.io.ByteArrayInputStream(bytes);
java.io.BufferedReader reader = new java.io.BufferedReader(new java.io. InputStreamReader (bin,"GBK"));
String msg = reader.readLine();
System.out.println(msg)
这段程序放到包含"中文测试"这四个字的系统(如中文系统)中,可以正确地打印出这些字。msg字符串中包含了正确的"中文测试"的Unicode编码:"\u4e2d\u6587\u6d4b\u8bd5",打印时转换为操作系统的默认字符集,是否可以正确显示依赖于操作系统的字符集,只有在支持相应字符集的系统中,我们的信息才能正确的输出,否则得到的将会是垃圾。
B/S结构的的应用程序(包括JS程序)必须部署到客户端,以减轻服务端压力。
很明显的,假如同时对一万台客户机提供服务,就是说服务器同时响应一万个客户请求。
假如你用的是一台SUN服务器,我用一台PC。你的服务器速度比我的快100倍,当然了,我相信价格可能就不止100倍了。可是同时我拥有那一万台处理器的能力,而你没有使用。
例如你的服务器处理一个数据请求花费10毫秒+传送=0.1毫秒,这样队列中最后一个客户被响应的时间为10000*10.1/1000=101秒。就是一分半钟以上。
你不能指望你那著名的SUN在数据传送上比偶的可怜的PC强到哪里去,就算它快10倍,偶的传送要花1毫秒。偶的响应时间为10000*1/1000=10秒。况且偶认为在这个传送时间上强大的服务器并没有传说中的那么强大的优势,不是10倍而是差不多。
假定客户使用同样的破烂PC,数据在客户端的处理时间是1秒,这样最后一个最终用户看到显示的时间不超过11秒。偶相信没有人会在那里等上1分半钟直到你强大的SUN腾出那么点时间响应他。
看这一句:
if (Ord(stText[i]) >= 129) and (Ord(stText[i + 1]) >= 64)Delphi居然把单个字符读为两段,按照字节来读,汉字为双字节。Ord函数返回的是GBK位置。
JS把汉字读为一个字符。这TMD的是省事了,就是不知道如何快速转回去算。-------------------------------------------------------
function MakeSpellCode(stText: string; iMode, iCount: Integer): string;
var
i, Index: integer;
APy, ls_code: string;
fFlag1, fFlag2, fFlag3: Boolean;
begin
fFlag1 := (iMode and $0001) = 1;
fFlag2 := (iMode and $0002) = 2;
fFlag3 := (iMode and $0004) = 4;
Result := '';
if iMode < 0 then Exit;
i := 1; while (i <= Length(stText)) do begin
if (Ord(stText[i]) >= 129) and (Ord(stText[i + 1]) >= 64) then begin
// 是否为 GBK 字符
case Ord(stText[i]) of
163: // 全角 ASCII
begin
APy := Chr(Ord(stText[i + 1]) - 128);
// 控制不能输出非数字, 字母的字符
if not fFlag3 and not (APy[1] in ['a'..'z', 'A'..'Z', '0'..'9']) then
APy := '';
end;
162: // 罗马数字
if Ord(stText[i + 1]) > 160 then
APy := CharIndex[Ord(stText[i + 1]) - 160] else
// 在罗马数字区, 不能翻译的字符非罗马数字
if fFlag2 then APy := '?' else APy := '';
166: // 希腊字母
if Ord(stText[i + 1]) in [$A1..$B8] then
APy := UpperCase(CharIndex2[Ord(stText[i + 1]) - $A0])
else if Ord(stText[i + 1]) in [$C1..$D8] then
APy := UpperCase(CharIndex2[Ord(stText[i + 1]) - $C0]);
else // 一般汉字
if gi_loaded = 1 then begin // 使用外挂
// 获得拼音索引
ls_code := IMCodes[Ord(stText[i]) - 128, Ord(stText[i + 1]) - 63].PYCode;
if not fFlag1 then // iFlag1 = False, 是单拼音
APy := Copy(Uppercase(ls_code), 1, 1) else
APy := Copy(Uppercase(ls_code), 1, 6);
end else begin // 使用内置
// 获得拼音索引
Index := PyCodeIndex[Ord(stText[i]) - 128, Ord(stText[i + 1]) - 63];
if Index = 0 then // 无此汉字, 不能翻译的字符, GBK 保留
if fFlag2 then APy := '?' else APy := ''
else if not fFlag1 then // iFlag1 = False, 是单拼音
APy := Copy(Uppercase(PyMusicCode[Index]), 1, 1) else
APy := Copy(Uppercase(PyMusicCode[Index]), 1, 6);
end;
end;
Result := Result + APy;
Inc(i, 2);
end else begin // 在 GBK 字符集外, 即半角字符
if fFlag3 or (stText[i] in ['a'..'z', 'A'..'Z', '0'..'9']) then
Result := Result + UpperCase(stText[i]);
Inc(i);
end;
end;
Result := Copy(Result, 1, iCount);
end;
例如“单”
单干: dan
单于:chan
单县:shan
单独:dan
加上原有的42K单音字典和4k发音表及1K程序,总量大约在150K。对JS来说这是太大了。