本来この部分はフロントエンドで処理すべきなのですが、フロントエンドが怠惰すぎるため、URLEncoder.encodeを使ってフロントエンドとバックエンドでトランスコーディングを行うしかありません。
まず理由をお話しますと、IOSとAndroidの開発により、Androidでは中国語のトランスコードが行われるのですが、IOSではトランスコードが行われないため、Android側では写真へのアクセスは正常ですが、IOS側では表示が異常になります。
シンボルもトランスコードされるため、トランスコード プロセスは次のようになります。なので再度交換が必要です
:// 转码后是 %3A%2F%2F
/ 转码后是 %2F
String url = "https://kos-oss-test.oss-cn-hangzhou.aliyuncs.com/kite/企业微信截图_16387525355876_1638753098297.png";
String encode = URLEncoder.encode(url,"utf-8");
String replace = encode.replace("%3A%2F%2F", "://");
String replace1 = replace.replace("%2F", "/");
System.out.println(encode);
System.out.println(replace1);
トランスコードされたAndroidも上記のものなので、トランスコードされたURLは正常に表示できますし、元のAndroid端末にも影響はありません。
ファローアップ
このトランスコーディングは完全ではなく、中国語以外の部分もトランスコードされ、リンクが無効になることがオンラインで判明しました。中国語のみがトランスコードされます。メソッド: java:URLEncoder.encode は中国語のみをトランスコードします
。