gpt4 book ai didi

java - Content-Disposition 值 : form-data; name ="userfile"; filename ="IMG_٢٠١٩١١١٥_٠٩٠٢٠٤١١٤.jpg" 中 42 处的意外字符 0x662

转载 作者:行者123 更新时间:2023-11-30 06:40:07 25 4
gpt4 key购买 nike

我正在我的 android 应用程序中使用本地化

当语言设置为阿拉伯语时,在 okhttp (okhttp:3.12.0) 的文件上传过程中出现此错误

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.prominere.health1, PID: 7502
java.lang.IllegalArgumentException: Unexpected char 0x662 at 42 in Content-Disposition value: form-data; name="userfile"; filename="IMG_٢٠١٩١١١٥_٠٩٠٢٠٤١١٤.jpg"
at okhttp3.Headers.checkValue(Headers.java:272)
at okhttp3.Headers.of(Headers.java:224)
at okhttp3.MultipartBody$Part.createFormData(MultipartBody.java:259)
at okhttp3.MultipartBody$Builder.addFormDataPart(MultipartBody.java:324)
at com.prominere.health1.ProfileActivity.onValidationSucceeded(ProfileActivity.java:222)
at com.mobsandgeeks.saripaar.Validator.triggerValidationListenerCallback(Validator.java:719)
at com.mobsandgeeks.saripaar.Validator.validateFieldsWithCallbackTill(Validator.java:697)
at com.mobsandgeeks.saripaar.Validator.validateUnorderedFieldsWithCallbackTill(Validator.java:679)
at com.mobsandgeeks.saripaar.Validator.validate(Validator.java:334)
at com.mobsandgeeks.saripaar.Validator.validate(Validator.java:295)
at com.prominere.health1.ProfileActivity.onClick(ProfileActivity.java:139)
at com.prominere.health1.ProfileActivity_ViewBinding$4.doClick(ProfileActivity_ViewBinding.java:81)
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:18)
at android.view.View.performClick(View.java:5675)
at android.view.View$PerformClick.run(View.java:22641)
at android.os.Handler.handleCallback(Handler.java:836)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6251)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)

我的代码块是

final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/*");
formBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("action", "updateprofile")
.addFormDataPart("userfile", file.getName(), RequestBody.create(MEDIA_TYPE_PNG, file))
.addFormDataPart("userid", user.getId())
.addFormDataPart("name", name.getText().toString())
.build();

我该如何解决这个问题

最佳答案

尝试像这样编码文件名:

URLEncoder.encode(file.getName(), "utf-8")

这样你的代码就变成了

final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/*");
formBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("action", "updateprofile")
.addFormDataPart("userfile", URLEncoder.encode(file.getName(), "utf-8"), RequestBody.create(MEDIA_TYPE_PNG, file))
.addFormDataPart("userid", user.getId())
.addFormDataPart("name", name.getText().toString())
.build();

关于java - Content-Disposition 值 : form-data; name ="userfile"; filename ="IMG_٢٠١٩١١١٥_٠٩٠٢٠٤١١٤.jpg" 中 42 处的意外字符 0x662,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58869988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com