使用 groovy 将 ISO-8859-1 转换为 UTF-8

2024-01-03

我需要将 ISO-8859-1 文件转换为 utf-8 编码,而不丢失内容信息...

我有一个如下所示的文件:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<HelloEncodingWorld>Üöäüßßß Test!!!</HelloEncodingWorld>

不是我想将其编码为 UTF-8。 我尝试了以下操作:

f=new File('c:/temp/myiso88591.xml').getText('ISO-8859-1')
ts=new String(f.getBytes("UTF-8"), "UTF-8")
g=new File('c:/temp/myutf8.xml').write(ts)

由于字符串不兼容而不起作用。 然后我读了一些关于 bytestreamreaders/writers/streamingmarkupbuilder 和其他...

然后我尝试了

f=new File('c:/temp/myiso88591.xml').getText('ISO-8859-1')
mb = new groovy.xml.StreamingMarkupBuilder()
mb.encoding = "UTF-8"

new OutputStreamWriter(new FileOutputStream('c:/temp/myutf8.xml'),'utf-8') << mb.bind {
    mkp.xmlDeclaration()
    out << f
}

这完全不是我想要的..

我只是想用 ISO-8859-1 阅读器读取 xml 的内容,然后将其放入新的(旧的)文件中......为什么这么复杂:-/

结果应该是这样,并且文件应该真正以 utf-8 编码:

<?xml version="1.0" encoding="UTF-8" ?> 
<HelloEncodingWorld>Üöäüßßß Test!!!</HelloEncodingWorld>

感谢您的任何答复 干杯


def f=new File('c:/data/myiso88591.xml').getText('ISO-8859-1')
new File('c:/data/myutf8.xml').write(f,'utf-8')

(我刚刚尝试过,它有效:-)

与 java 中相同:库为您进行转换... 正如 deceze 所说:当您指定编码时,它将被转换为内部格式(utf-16 afaik)。当您在写入字符串时指定其他编码时,它将转换为该编码。

但如果您使用 XML,则无论如何都不必担心编码,因为 XML 解析器会处理它。它将读取第一个字符<?xml并根据这些字符确定基本编码。之后,它就可以从 xml 标头读取编码信息并使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 groovy 将 ISO-8859-1 转换为 UTF-8 的相关文章

随机推荐

  • 如何在 Swift 中声明和初始化数组

    我在 Swift 中有一个类 我正在尝试编写它 它有一个对象数组的变量 有更好的方法来写这个吗 var myvar Array
  • 使用 FileManager 复制文件时出错(CFURLCopyResourcePropertyForKey 失败,因为传递的 URL 没有方案)

    我正在尝试使用以下命令将一些 媒体 文件从一个文件夹复制到另一个文件夹FileManager s copyItem at path 但我收到错误 CFURLCopyResourcePropertyForKey 失败 因为它传递的 URL 没
  • Elastic Search - 用于内部命中的 java api

    我做了一些查询 如下所示 query nested path comments votes query inner hits 我将它转换为java api QueryBuilders boolQuery must boolQuery mus
  • 为不同的语言环境定制 java.text 格式化程序

    构建一个支持不同语言环境的 java 应用程序 但想要自定义DateFormat显示超出之间可用的内容FULL LONG MEDIUM and SHORT日期格式选项 想做一些事情 比如在日期和时间部分之间放置一个字符DateFormat
  • 索引 0 {} 处缺少参数名称

    我尝试写一个演示 交付演示 https github com CIeNET Corda deliverydemo基于训练营cordapp https github com corda bootcamp cordapp并参考cordapp 示
  • 使用反射更改只读属性

    是否可以 通过反思还是其他方式 正如其他人所说 如果您需要这样做 那么您首先将面临设计问题 现在 如果你想知道这是否可能只是为了了解 或者如果地球上没有其他方法可以做到这一点 那么在一个非常小的帮助下 这确实是可能的辅助库 http git
  • 如何将数据文件包含在应用程序的 APK 中?

    我想在安装 Android 应用程序时创建一些预先创建的文件 我想在内部存储器 data data files 和新创建的 sdcard 目录 sdcard data1 中创建文件 我怎样才能做到这一点 如果您有大量文件和目录结构 则应使用
  • 如何使用 Stylish 或 Greasemonkey 替换 @media (max-width)?

    我在查看时遇到问题这个网站 http www fleaflicker com nfl 在我的桌面浏览器上 它们采用响应式 流畅设计 当浏览器宽度小于 990 像素时 显示移动菜单按钮而不是水平导航栏 由于我使用的是 125 缩放的 Fire
  • 如何在pandas中创建日历表(日期维度)

    数据库设计中有时会使用带有主键的日期表 date id Date Record timestamp Day Week Month Quarter Year half Year 0 2000 01 01 NaN Saturday 52 1 1
  • Django:db_index 和 makemigrations

    我想在模型中的现有字段中添加一些 db index 我刚刚添加了db index True到模型 我想我需要跑步python manage py migrate将它们应用到数据库上 我的问题是没有检测到任何更改 因此没有创建迁移 这是正常行
  • 使用 python 和 OpenCV 从图像中提取数字

    我正在寻找一些编码解决方案 帮助从液晶显示屏中提取数字 然后从图像中输出值 下面是代码和示例图像以及到目前为止我是如何得到的 但我需要一些进一步的帮助来实际从图像中提取 数字 并输出值 我从前面的例子中制作了数字查找表 import the
  • 尝试加载字体时出现 GD 错误

    我尝试通过以下方式加载字体图像加载字体 http www php net manual en function imageloadfont php功能 当我运行脚本时 我收到错误 gd warning product of memory a
  • R语言,暂停循环并要求用户继续

    我有一个想法在某些迭代中暂停循环并向 用户 询问一些答案 例如 some value 0 some criteria 50 for i in 1 100 some value some value i if some value gt so
  • 如何捕获无效的用户输入[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我不理解 Try throw catch 语句 并且想知道当代码中的所有 put 都应该是 int 时 捕获 char 的最佳方式是什么 这
  • TableView 单元格分隔线未延伸到整个单元格

    我正在开发一个新项目 并在 UI 中使用了故事板 我的所有 tableView 都存在行分隔符问题 下图显示了两条线 第一个是在属性检查器中设置的蓝色 第二个是黑色的 添加了我放置在单元格中的 imageView 该线确实延伸到单元格的右侧
  • 如何在 Java 中连接两个列表?

    有没有比以下更简单的方法 List
  • 无需分组即可获得最大值

    假设我有一张这样的表 name age a 1 b 2 c 3 d 4 e 5 f 6 通常 当我们选择 MAX age 时 它返回 f 6 元组 但我想要的是它应该按原样返回表 但所有年龄值都将是最大值 例如 name age a 6 b
  • 使用 Flyway 管理修补程序

    假设我有 2 个分支 Develop与迁移 V1 change1 V2 change2 V3 change3 V4 change4 V5 change5 Master迁移 部署在生产环境中 V1 change1 V2 change2 现在我
  • 如何在 jetpack compose 中显示具有适当大小/布局的垂直文本

    如何在 jetpack 中正确旋转文本并使其进行正确的布局 当我使用rotate文本对象上的修饰符会旋转文本 但布局中占用的大小似乎使用预旋转的文本宽度 这是我想要完成的一个简单示例 垂直文本应该位于狭窄空间的左侧 Composable f
  • 使用 groovy 将 ISO-8859-1 转换为 UTF-8

    我需要将 ISO 8859 1 文件转换为 utf 8 编码 而不丢失内容信息 我有一个如下所示的文件