- 浏览: 184927 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
fke153:
...
关于wsdl生成java的方式 -
huanglppp:
楼主这样行不?后面参数怎么传。。。给个具体的DEMO
E-ma ...
Spring AOP的日志管理 -
onlysoymilk:
设置了注解模版这样就可以避免忘了写注解了!
关于MyEclipse中注释模板的设置
最近公司的一个需求是在输入邮箱地址需要输入中文域名。之前的代码是我同事写的,然后叫我去看看代码哪里有了出问题,也就是说叫我去调试程序,IDE环境是在XP下的而服务器是部署在Unix下的,也就是说既要在本地测试通过了再部署到Unix下服务器上,感觉是繁琐了些,但是也是第一次亲密接触在Unix下部署web服务器。感觉是学到了许多。下面就具体问题具体问题具体分析:
首先我列出我的出现问题的代码如下:
Action中的代码:
/** * 设置邮件转发地址 * * @struts.action path="/mailbox/controller/addr_forward/action" * * */ public ActionForward modifyPrefForwardAddr(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ActionForward actionForward = super.getCommSucc(mapping); ActionForward failForward = super.getCommFail(mapping); ActionMessages errorMsg = new ActionMessages(); ForwardAddrForm forwardForm = (ForwardAddrForm) form; String forward_add = forwardForm.getForwardAdd(); String mailboxid = forwardForm.getMailboxId(); String hideForwardAddStr = forwardForm.getHideForwardAdd(); String tid = forwardForm.getTid(); int hideForwardAddSumNumber = 3;// default value if (StringUtils.isNotBlank(hideForwardAdd_sum)) { try { hideForwardAddSumNumber = Integer.parseInt(hideForwardAdd_sum); } catch (NumberFormatException e) { e.printStackTrace(); } } String[] hideForwardAddrArrays = new String[hideForwardAddSumNumber]; String[] tmpHideForwardAddr = null; if (StringUtils.isNotBlank(hideForwardAddStr)) { //log.warn(hideForwardAddStr); hideForwardAddStr = hideForwardAddStr.trim(); tmpHideForwardAddr = hideForwardAddStr.split(","); } if (tmpHideForwardAddr != null) { int count = 0; for (String addr : tmpHideForwardAddr) { //.warn("HideForwardAddress: " + addr); if (StringUtils.isNotBlank(addr) && KennyUtil.isValidatorEmail(addr)) { //log.warn("Pass"); hideForwardAddrArrays[count] = addr; count++; if (count == hideForwardAddSumNumber) break; } else { // do nothing //log.warn("Ban"); } } } if (StringUtils.isBlank(tid) || StringUtils.isBlank(mailboxid)) { return null; } Mailbox mailbox = new Mailbox(); mailbox.setId(mailboxid); mailbox.setMailboxTmailId(tid); if (!KennyUtil.isValidatorEmail(forward_add)) { forward_add = null; } try { AccBus.modifyAccountMailForwardingAddress(mailbox, hideForwardAddrArrays, forward_add); // AccBus.modifyMailboxPrefForwardAdd(mailbox, forward_add); } catch (ServiceException e) { // e.printStackTrace(); TreeExceptionFactory.serviceErrorReturn(failForward, errorMsg, e); addMessages(request, errorMsg); return failForward; } return actionForward; }
校验中文字符代码:
/** * 检查是否含有中文字符 * * @param str * @return */ public static boolean isValidatorChinese(String str) { // boolean flag = str.length() != str.getBytes().length; // return flag; boolean flag = false; if (str != null) { char[] strCharArray = str.toCharArray(); log.warn("strCharArray"); for (int i = 0, l = strCharArray.length; i != l; ++i) { log.warn("for begin"); if (java.lang.Character.toString(strCharArray[i]).matches( "[ \\u4E00-\\u9FA5]+")) { flag = true; break; } } } return flag; }
校验邮箱地势是否合法代码:
/** * 检查邮件地址是否合法 * * @param emailAddress * @return */ public static boolean isValidatorEmail(String emailAddress) { boolean flag = GenericValidator.isEmail(emailAddress); log.warn("before==>" + flag); if (!flag && isValidatorChinese(emailAddress)) { // 邮件地址中含有中文,姑且暂时算有效。 log.warn("inner==>" + flag); int dian = emailAddress.indexOf('.'); int at = emailAddress.indexOf('@'); if (dian > 0 && at > 0) { flag = true; } } log.warn("after==>" + flag); return flag; }
问题1:同样的Web包,在不同服务器下运行出现的结果不同的。在我公司201服务器运行就可以添加中文域名邮箱转发地址,而在用虚拟机安装的217和210服务器上就不能。
尝试办法1:我针对这种情况就用日志在Action中的进行了跟踪,然后在unix下查看是否是乱码。我就用locale和env发现201的是UTF-8,217的也是UTF-8,而210的则是C(我也不懂这是什么编码),但是无论在哪个服务器上测试都是乱码,但是这就奇怪了,所以这种查看系统编码不是问题的解决办法。虽然会在某些会起作用,至少现在对于我来说不能。
尝试 办法2:于是继续进行下一步的判断,页面的判断,于是我再建立另外的一个页面进行替换,结果还是不行,而且页面是现实正常的,确定于页面无关。
尝试办法3:进行JS的检查,不断地alert(),结果那些被调用的JS都是正常的,这种方法又被排除。
尝试办法4:我查看了我们的数据库编码,但是都是GBK。想想,这与数据库编码没得多大影响吧,因为在其他的页面都可以正常显示。这种方法又排除了。
尝试办法5:最后我就再次仔细地进行JAVA后台代码的调试。结果发现在Acion中的调用校验的方法里有问题,就顺着去查看,发现这段代码的运行结果怎么都是false。
public static boolean isValidatorEmail(String emailAddress) { boolean flag = GenericValidator.isEmail(emailAddress); log.warn("before==>" + flag); if (!flag && isValidatorChinese(emailAddress)) { // 邮件地址中含有中文,姑且暂时算有效。 log.warn("inner==>" + flag); int dian = emailAddress.indexOf('.'); int at = emailAddress.indexOf('@'); if (dian > 0 && at > 0) { flag = true; } } log.warn("after==>" + flag); return flag;
于是就找到这个方法
isValidatorChinese
之前的代码是
boolean flag = str.length() != str.getBytes().length; return flag;
改后代码为:
boolean flag = false; if (str != null) { char[] strCharArray = str.toCharArray(); log.warn("strCharArray"); for (int i = 0, l = strCharArray.length; i != l; ++i) { log.warn("for begin"); if (java.lang.Character.toString(strCharArray[i]).matches( "[ \\u4E00-\\u9FA5]+")) { flag = true; break; } } } return flag;
结果就可以运行,试问大家这两段代码在判断中文上为什么运行不同呢?
发表评论
-
介绍一个最近项目上使用的一个架构
2013-04-28 13:15 3758数据库:使用mysql主从复制+mysql proxy代理 ... -
jsp的获取上一次的请求URL
2011-02-23 17:20 4348最近在做一个需求,关于修改完后自动跳转到上一页面,主要跳转的是 ... -
WinXP中 解决 文件夹拒绝访问 问题
2011-01-18 11:51 2423在重新安装Windows XP系统前,为了避免重要数据文件丢 ... -
cookie设置多个应用共享
2010-11-24 16:55 3960正常的cookie只能在一个应用 中共享,即一个cookie ... -
[讨论]去掉office正版提醒
2010-11-09 21:22 1928[讨论]去掉office正版提醒 今天打开word, ... -
关于webservice的一些细节注意
2010-10-15 17:38 1398最近在做java的webservice的开发,主要是做接口开发 ... -
Win下安装Cygwin中的SSH服务
2010-07-15 10:11 1406windows和linux各有其优越性,可以安装在同一台电脑上 ... -
form.elements.length 的一个bug:但选择一个时,不能选择
2010-06-28 14:26 2287form.elements.length 如果长度为1时 返回 ... -
SVN 修改用户名与密码
2010-06-06 16:24 10903由于在svn的界面中并没有为我们提供直接更换用户名密码的地方, ... -
使用java获取计算机的IP和hostname
2010-04-15 15:24 13162import java.util.*; import jav ... -
DB2的一些问题
2010-02-04 08:47 1510当出现有如下以下异常: SQLException excep ... -
纯javaSript分页
2009-11-20 19:26 1127<!DOCTYPE html PUBLIC " ... -
邮件附件名超长问题的解决
2009-11-17 10:07 1516关于这个问题:我的理解思路是: 我找到tmailercomm ... -
How to install software under Ubuntu
2009-09-20 15:23 1160ubuntu提供了三种软件包管理软件:添加/删除程序,新立得( ... -
关于wsdl生成java的方式
2009-09-16 20:52 3496第一种方式: set Axis_Lib=E:\jars\ax ... -
关于linux的安全模式
2009-09-09 20:18 1593插入linux的安装盘, 按F5 按照提示输入命令 进入 ... -
关于VI操作的一些命令和快捷键
2009-08-23 17:09 7759最近的工作都 ... -
虚拟机无法启动问题及解决方法
2009-07-29 23:31 2759问题情况: 显示:无法打开磁盘 F:\2000\Window ... -
关于两个Select与a的赋值的JS脚本
2009-07-15 22:12 3896<select onchange="shows ... -
关于MyEclipse中注释模板的设置
2009-07-12 11:52 4537代码的注释是非常重要的,但是我们在IDE怎么设置注释的模板呢, ...
相关推荐
然而,由于早期的互联网技术标准并不完全支持中文,因此在使用中文域名时可能会遇到一些问题,需要通过特定的插件或设置来解决。 1. **下载和安装i-Nav插件**:i-Nav是一款使浏览器能够识别和解析中文域名的插件。...
域名转发/转发系统/跳转 多方式 URL转发/服务/隐藏转发 1.直接转发域名服务,跳转至目标网址,直接显示目标网址。 2.隐藏转发域名服务,隐藏目标网址,直接显示您的域名。 没有网站标题。 3.URL转发支持:隐藏转发...
1. **中文域名客户端软件**:中文域名客户端软件主要用于解决浏览器对中文域名的识别和解析问题。某些浏览器可能不支持直接输入中文域名,此时需要通过客户端软件进行转换。安装客户端软件后,用户可以更顺畅地访问...
2. **DNS解析**:在处理域名转发之前,首先需要进行DNS(Domain Name System)解析,将输入的域名转换成IP地址。易语言中可能需要调用系统API或第三方库来完成这一过程。 3. **HTTP/HTTPS协议**:域名转发通常涉及...
关于互联网中文域名管理的通告.doc
总的来说,"邮箱地址生成器"和"中文名生成器"是通过程序化的方式来解决批量生成唯一标识的问题,它们结合了随机算法和字符串处理技术,能够帮助开发者在短时间内创建大量定制化的数据,提高工作效率。在理解和实现这...
提到的WindowsFormsApplication2可能是一个基于Windows Forms的C#或VB.NET应用程序,该程序提供了图形化的用户界面,用于进行中文域名的编码转换操作。这个程序包含的功能有: 1. **GBK到Punycode转换**:输入GBK...
中文域名解码系统在一定程度上缓解了这些问题,但要实现全面推广,还需要各方面的共同努力。 总的来说,中文域名解码系统v1.2 HTML5版是一款实用性与技术性兼备的工具,它利用HTML5的优势,解决了中文域名访问的...
总结来说,中国万网域名主机邮箱API接口提供了丰富的域名、虚拟主机和企业邮箱管理功能,通过编程方式为企业和个人提供了灵活、便捷的服务整合途径。开发者可以通过学习和使用这个API来自动化和定制化他们的网络服务...
总的来说,【中文域名转码ASP版1.0.rar】提供的是一套用ASP编写的、解决中文域名在互联网上使用问题的工具。它利用IDN技术和punycode编码,实现了中文字符与DNS系统兼容的转换,对于需要使用中文域名的网站管理员来...
中文域名中文域名,中文网址输入中文可以直接打开网址呢
它允许用户生成临时邮箱地址,以便在不暴露个人真实邮箱的情况下接收邮件。 描述中提到的“php邮箱系统源码,开源要的快下”意味着该系统是开放源代码的,允许开发者下载、查看和修改源代码。这为那些希望自定义...
在某些情况下,可能需要更新客户端软件或使用支持中文域名的DNS服务以确保全局兼容性。 总的来说,配置Nginx以支持中文域名涉及的主要知识点包括:Punycode编码的原理和用途、DNS系统对ASCII字符的依赖、Nginx...
这些方法可能包括正则表达式匹配、DNS反向查找等手段来确认邮箱格式是否正确,并且该邮箱的域名部分确实存在。例如,类库可能会定义一个名为 `isValidEmail` 的方法,它会利用PHP内置的 `filter_var` 函数或者自定义...
Windows Live企业邮箱是一种由微软提供的免费企业邮件服务,它允许企业使用自己的域名作为电子邮件的后缀,从而提升公司的专业形象并方便地管理员工的邮箱。使用企业邮箱的一大好处是能够自定义邮箱地址,例如,一个...
4. **IDN(国际化域名)处理**:现代域名支持非ASCII字符,如中文字符。Java提供了IDN类来处理这些域名,将其转换为 Punycode 形式进行处理。 5. **TLD列表**:为了判断顶级域的合法性,开发者需要维护一个TLD列表...
中国互联网协会中文域名推进工作组2021年度浏览器中文域名普遍适用性测试报告2021.5(15页).pdf
- **未来趋势**:关于是否开放个人申请国内域名的问题,CNNIC正在考虑之中。 #### 中文域名的注册 随着互联网技术的发展,中文域名作为一种新的域名类型也开始受到关注。目前,CNNIC已经开设了中文域名的注册服务...
中文域名申请注册流程.pptx
可以通过近三天将要删除的国际域名,然后根据相关操作挑选你中意的域名加入到超级域名抢注任务中,域名超级抢注,集成国内外多家最强大抢注端口,无须熬,全中文操作。更多功能详情,敬请广大米友或者域名投资商,...