我正在为以下问题而苦苦挣扎:当用户将某些对象上载到服务器时,该对象的属性包含空格或非拉丁字符(例如ლ等),该对象最初保存在db中(我正在使用的数据库支持utf8编码),但是问题是我想在url中使用该属性(例如名称:საქართველო),但url不支持utf8字符。您可能会说只是替换它们,但是还有另一个问题:我在服务器端(Expressjs)中将该属性用作url参数,并且如果像.split(' ').join('-')
那样更改它们,是否会对我的参数产生影响?如果“名称”是“ hello world”并且更改为“ hello-world”,会影响结果吗?当前,空格被更改为%20
并且可以使用。第二个问题。如何将每个非拉丁字符更改为拉丁字符(在我的示例中为q-ქ,w- but等,但也有许多不同的非拉丁字母)我应该手动更改它们还是有一些api或其他东西?
谢谢!
最佳答案
我认为您正在寻找的是encodeURI()
encodeURL("საქართველო");
//returns "%E1%83%A1%E1%83%90%E1%83%A5%E1%83%90%E1%83%A0%E1%83%97%E1%83%95%E1%83%94%E1%83%9A%E1%83%9D"
更新
for(var i=0; i<str.length; i++){
var charAtIndex = str[i];
var encodedCharAtIndex = encodeURI(charAtIndex);
if(charAtIndex != encodedCharAtIndex){
//char is non-utf8
}
}