Javascript 如何确定字符串中是否有外来字符(不是来自英文字母)?

Javascript 如何确定字符串中是否有外来字符(不是来自英文字母)?,javascript,encoding,Javascript,Encoding,我将谷歌地图结果存储在我的数据库中,谷歌有时会返回特殊字符,所以在存储到数据库之前,我先尝试使用encodeURI(字符串)。但是,它在编码时包含空格,因此很难读取数据库中的值 如您所见,某些行中的空格也被编码为%20。如何识别哪些字符串具有特殊字符,以便仅对这些行进行编码,而使用相同字母表的其他行保持不变?有什么有效的方法吗 2014年3月10日编辑: 这就是我刚才为解决这个问题所做的: $unreadable_characters = array("%20", "%27", "%2E",

我将谷歌地图结果存储在我的数据库中,谷歌有时会返回特殊字符,所以在存储到数据库之前,我先尝试使用encodeURI(字符串)。但是,它在编码时包含空格,因此很难读取数据库中的值

如您所见,某些行中的空格也被编码为%20。如何识别哪些字符串具有特殊字符,以便仅对这些行进行编码,而使用相同字母表的其他行保持不变?有什么有效的方法吗

2014年3月10日编辑: 这就是我刚才为解决这个问题所做的:

$unreadable_characters = array("%20", "%27", "%2E", "%2C", "_");
    $readable_characters = array(" ", "'", ".", ",", " ");
//然后使用str_replace将所有这些字符更改为可读格式:

$keyword = str_replace($unreadable_characters, $readable_characters, $value[0]);

从数据库检索值时使用urldecode()仍会在UI中输出正确的字符串:)

我认为可以使用正则表达式检查字母表:

var st = $('#id').val();
if(/^[a-zA-Z0-9- ]*$/.test(st) == false) {
    alert('string contains non english characters');
}

与其添加逻辑,不如尝试让mysql存储特殊字符,感谢您提出的解决方案!我觉得那很好!虽然我刚才所做的只是在插入到数据库之前替换它们,以获得更清晰的视图,如:$unreadable_characters=array(“%20”、“27”、“2E”、“2C”、“”)$可读字符=数组(“,”,“,”,“,”,”);