Flutter无法加载文件名含德语变音符号的资源 如何不修改文件名解决
Flutter加载带德语变音符号资源的无需改文件名解决方案
该问题本质是Flutter资源解析逻辑和本地文件系统字符编码不匹配导致,可通过以下方案修复,无需修改原文件名:
- 确认
pubspec.yaml中的资源路径声明和实际文件名完全一致,不要手动转义变音符号,直接复制实际文件名填写路径即可,示例文件对应声明为- assets/images/Zähne.png - 强制指定项目字符编码为UTF-8
- 安卓端:在
android/app/build.gradle的android配置块中添加如下配置:android { // 原有配置保留 compileOptions { encoding "UTF-8" sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" freeCompilerArgs += ["-encoding", "UTF-8"] } } - iOS端:打开Xcode进入项目「Build Settings」,搜索「Encoding」,将所有字符编码项改为「Unicode (UTF-8)」,同时确认「Copy Bundle Resources」中对应资源的文件名未被自动转义
- 安卓端:在
- Flutter 3.0+版本可通过Uri编码路径手动加载资源,代码示例如下:
import 'dart:convert'; import 'package:flutter/services.dart'; import 'dart:ui' as ui; Future<ui.Image> loadSpecialCharAsset(String assetPath) async { final byteData = await rootBundle.load(Uri(path: assetPath).toString()); final imageCodec = await ui.instantiateImageCodec(byteData.buffer.asUint8List()); final frameInfo = await imageCodec.getNextFrame(); return frameInfo.image; } // 调用示例:loadSpecialCharAsset("assets/images/Zähne.png") - 完成配置后执行
flutter clean清理缓存,再执行flutter pub get重新拉取依赖后运行项目即可
示例报错信息:
解析图像编解码器时抛出以下断言:
无法加载资源:assets/images/Zähne.png
内容的提问来源于stack exchange,提问作者bd1909
相关产品推荐
相关产品推荐

