Java
文章平均质量分 74
国际化梦工厂
专注国际化开发与测试
展开
-
Spring MVC @RequestMapping中的乱码问题解析
国际化测试过程中,上传下载以本地字符命名的附件是一个不容忽视的测试用例,也是非常容易发现bug的环节。如下图所以,用户期望的日文文件名在该场景中已经变为了不可读的乱码。 导致这个现象的技术成因有很多,这里我们使用了Spring MVC框架的@RequestMapping(参数绑定)作为技术背景对问题进行剖析。 首先对参数绑定做一个简单介绍。@Requ原创 2016-08-14 19:39:06 · 21884 阅读 · 0 评论 -
都是ß惹的祸
收到一个客户报来的bug,说自己在创建某个component时,一旦命名中包含了ß(例如UEMENß),该创建功能会导致失败,删除掉ß后该功能正常运行。不少资深的测试和开发留言说—— ß是一个非常tricky的字符,很多第三方库对其支持都不好,其他产品也有类似问题吗,在release notes务必加上一句告知用户。 ß当真如此神秘?怎么就引得无数英雄尽折腰呢?为何那么多第三方库对其支持都不好呢?...原创 2018-04-27 18:17:01 · 10116 阅读 · 0 评论 -
从json到gson
眼下JSON(JavaScriptObject Notation)已经成为业内使用最为广泛的数据传输格式了,似乎不用JSON来存点儿东西,出门都不好意思跟人到招呼。这种与开发语言无关,轻量级的数据格式,之所以能够发展的如此迅猛,优点一定是显而易见的,例如:· 易于人类阅读和编写,格式都是压缩的,占用带宽小· 易于程序解析与生产,客户端JavaScript可以简单原创 2017-05-19 21:31:36 · 8376 阅读 · 0 评论 -
文本溢出与国际化
无论是table控件中可调节长度的column,还是tooltip中说明文字,想必大家对text ellipsis(文本溢出)的场景都再熟悉不过。说得再直白些,就是文本显示的部分省略,通过该功能可以有效避免layoutbreak问题。话说这对国际化人开发和测试人员来说应该是个利好啊,这样不就有效避免了各种longstring带来的布局问题么?Absolutely!然而世间事物就是这么奇特,往往兴一原创 2017-01-14 17:21:03 · 16104 阅读 · 0 评论 -
墙角下的toLowerCase()
Turkey对国际化开发和测试人员应该都不算陌生,在G11n的世界中,他一直都属于那种需要被“重点照顾”的同学。但究竟怎么个特殊法呢?我先来讲述一个亲身经历的往事。 故事就发生在不久前,首先测试人员安装AUT在TR win server上,紧接着在browser中键入需要访问的URL,点击Access试图访问AUT。然而奇迹就在此刻不期而遇了……测试人员在等待了很长时间后,页面上除了一个不原创 2016-12-26 17:52:52 · 11036 阅读 · 0 评论 -
由I18n静态代码测试说开去
提到机器学习,相信不少人心中都会默默的飘过三个字——树新风!眼下这样的评价倒也蛮中肯的!但就历史经验看,新技术的步伐往往比我们想象中的都大,所以我们有理由相信随着deeplearning的日渐成熟,不久的将来计算机的自我编程应该不会再只是科幻小说里的桥段。 本文的主题不是机器学习,也不是自我编程,而是bug预测程序。目的是通过使用机器学习和统计分析,来自动判断某一行代码是否存在瑕疵。其实代原创 2016-12-14 11:27:51 · 26605 阅读 · 0 评论 -
2016 Unicode Conference拾遗(三)
前两篇文章都在聊战术打法,本文开始说说具体的技术实现。Kat先生在这次大会上分享了不少i18n开源项目,包括以下内容。1. New Pseudolocalizer作为Android Studio的一部分,适用于Android SDK 23及更高版本。可以使用AAPTBuild tools: aapt --pseudo-localize,也可以通过File > Project St原创 2016-11-20 00:46:18 · 8322 阅读 · 0 评论 -
非英文键盘组合键失效的一种可能
使用非英文键(101)键盘进行输入,不少字符都无法正常输出,这应该算是一个还蛮常见的国际化问题,虽然其root cause千差万别。本文即将讲述一个用意大利键盘输入组合键时发生的异常情况,并尝试分析失效现象背后的一种技术可能。 业务背景是这样的,当用户在local client端用意大利键盘输入组合键Alt Gtrl + @时,remote端的notepad中显示字符[[[[,而其他按键则原创 2016-10-31 18:31:34 · 10240 阅读 · 0 评论 -
文本框无法接受非英文字符的技术分析
关于文本框无法输入非英文字符的现象,在日常国际化测试工作中出现的概率极大。为了限制用户的输入必须符合软件定义的规范,开发人员一般都会对输入框中的value通过正则表达式或事件进行校验。如下图所示,当cost type被设置为“日本语”时,错误框将弹出,操作也无法继续进行。本例中将以正则表达式作为假定的技术背景,对这一现象进行分析,示例代码如下。public class Cost原创 2016-08-14 19:56:52 · 10246 阅读 · 0 评论 -
JavaMail中的国际化(二)
书接前文,在解决了附件名乱码问题后,本文我们将目光转移到mail body上。 首先还是请大家先看一个bug,业务背景是这样的——当满足某种条件时,软件自动发功向用户发送alert邮件。本例中的期望结果应该是向日文用户发送以下信息。而用户看到的实际结果如下图。与上次不同,这回我们需要查阅的是发送不带附件邮件的代码,示意如下。protected void se原创 2016-09-03 22:34:18 · 9210 阅读 · 0 评论 -
Java Web项目中的国际化
如果你的主要工作就是开发或测试一个动态国际化Java Web项目,那么如下图所示的编码处理问题想必是“大宝天天见”咯。那么作为开发和测试人员,面对这样高频的事件,又需要怎样应对呢?本文将尝试从两个不同角度来分析在这样的技术背景下,我们需要注意哪些国际化知识点。首先对于开发人员来说,需要注意的是:一、HTML中的metacontent确保每一个HTML头部都包含有正确的编原创 2016-09-14 14:51:49 · 13242 阅读 · 0 评论 -
JavaMail中的国际化(一)
JavaMail是JavaEE中13种核心技术之一,其中有不少涉及国际化的知识点,例如subject, body, attachment时间日期等。本文我们来关注邮件附件乱码问题,首先看一个真实的bug,测试步骤如下。1. 创建一个mail notification,附件名为中文2. 触发notification条件,发送mail并检查结果如图所示。一探究竟,最终我原创 2016-08-30 22:41:44 · 10187 阅读 · 0 评论 -
Base64与国际化
背景介绍抛个问题,什么是base64?何时会用到他?与我们熟知的charset又是怎样的关系呢?跟国际化又有何恩怨呢?先看看wikipedia对其定义吧。“ Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于 26=64,所以每6个比特为一个单元,对应某个可打印字符。3个字节有24个比特,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。它可用来作为...原创 2018-08-22 18:10:03 · 14495 阅读 · 0 评论