背景
由于sdkParam的数据以utf-8数据显示时,会包括"&“与”=",与payInfo中存储数据的格式冲突。所以服务端传输sdkParam时,采用urlEncode的编码方式,客户端收到sdkParam数据时,需要对此数据进行转码 urlEncode -> utf-8。
urlencode、utf-8编码格式相互转化
String sourceString = "https://lf-webcast-sourcecdn-tos.bytegecko.com/obj/byte-gurd-source/10181/gecko/resource/wallet_h5_game/page/cashier/index.html?biz_id=1800201&order_id=T202303301601151761777932869675&out_order_id=7216246180471675652&loading_bgcolor=0xFF161823&hide_nav_bar=1&hide_title_bar=1&orientation=portrait&status_font_color=0";
String encode = null;
try {
encode = URLEncoder.encode(sourceString, "utf-8");
Log.i(TAG,"encode:" + encode);
String decode = URLDecoder.decode(encode, "utf-8");// GBK解码
Log.i(TAG,"decode:" + decode);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
输入结果如下:
2023-03-30 20:10:08.699 16883-16883/cn.jj.restart I/JJWorld: encode:https%3A%2F%2Flf-webcast-sourcecdn-tos.bytegecko.com%2Fobj%2Fbyte-gurd-source%2F10181%2Fgecko%2Fresource%2Fwallet_h5_game%2Fpage%2Fcashier%2Findex.html%3Fbiz_id%3D1800201%26order_id%3DT202303301601151761777932869675%26out_order_id%3D7216246180471675652%26loading_bgcolor%3D0xFF161823%26hide_nav_bar%3D1%26hide_title_bar%3D1%26orientation%3Dportrait%26status_font_color%3D0
2023-03-30 20:10:08.699 16883-16883/cn.jj.restart I/JJWorld: decode:https://lf-webcast-sourcecdn-tos.bytegecko.com/obj/byte-gurd-source/10181/gecko/resource/wallet_h5_game/page/cashier/index.html?biz_id=1800201&order_id=T202303301601151761777932869675&out_order_id=7216246180471675652&loading_bgcolor=0xFF161823&hide_nav_bar=1&hide_title_bar=1&orientation=portrait&status_font_color=0