V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
michaeljackson
V2EX  ›  分享创造

写了个 properties 文件中文转 unicode 转中文的在线工具

  •  
  •   michaeljackson · 140 天前 · 629 次点击
    这是一个创建于 140 天前的主题,其中的信息可能已经有所发展或是发生改变。

    工具比较简单,主要针对开发种的国际化操作,不过一般开发工具都有插件,这个主要是针对懒得装插件、或者找不到插件的用户的。

    https://www.devtools.cn/convert/propertiesconvert/

    大家可以试试 截图

    2 条回复
    AoEiuV020JP
        1
    AoEiuV020JP  
       140 天前
    properties 有什么特别的吗,
    我安卓开发一直不明白,android studio 里有个单独的 properties 编码设置,
    而且默认不是 utf8 也不是 gbk ,而是什么 iso-8859-1, 然后 gradle 又是以 utf8 编码读取的 properties ,
    最离谱的是没有全局默认的修改,只能一个项目一个项目修改,这么顽固是为了什么,
    michaeljackson
        2
    michaeljackson  
    OP
       140 天前
    @AoEiuV020JP 以下回答出自 GPT4O
    `properties` 文件在软件开发中用于存储键值对的配置数据,尤其在 Java 和 Android 开发中非常常见。在 Android Studio 及其构建工具 Gradle 中,`properties` 文件默认采用 ISO-8859-1 ( Latin-1 )编码,而不是 UTF-8 或 GBK ,这是有历史和技术原因的。

    ### 为什么 `properties` 文件默认使用 ISO-8859-1 编码

    1. **历史原因**:早期的 Java 平台(包括 JDK 和相关工具)采用了 ISO-8859-1 编码,因为当时这种编码足够满足配置文件的需求,并且兼容性更好。

    2. **兼容性**:ISO-8859-1 是单字节编码,与 ASCII 兼容,不会因为多字节字符的问题导致兼容性问题。因此,使用 ISO-8859-1 可以确保不同平台和环境之间的配置文件能够顺利传递和解析。

    3. **Java 规范**:Java 规范规定 `properties` 文件默认使用 ISO-8859-1 编码。即使文件中包含非 ISO-8859-1 字符,也会被转义为 Unicode 形式(如 `\uXXXX`),保证在读取时可以正确解析。

    ### Gradle 和 Android Studio 的处理方式

    虽然 Gradle 和 Android Studio 处理 `properties` 文件时会默认使用 UTF-8 编码读取,但这是为了支持更多字符集,特别是包含非拉丁字符的语言,如中文、日文等。这种做法确保了在多语言环境中的开发者体验。

    ### 修改项目的 `properties` 编码

    确实,Android Studio 没有提供全局修改 `properties` 文件编码的设置,只能一个项目一个项目地进行修改。这可能出于以下原因:

    1. **项目独立性**:每个项目可能有不同的编码需求,允许项目独立设置可以更灵活地满足不同项目的需求。

    2. **历史遗留**:大部分开发工具(包括 Gradle 和 Android Studio )遵循传统和规范,即使现代开发环境中可以支持更多编码,仍然保持对旧项目和旧环境的兼容性。

    ### 修改 `properties` 文件编码的方式

    如果你希望在项目中使用 UTF-8 编码的 `properties` 文件,可以在每个项目的 `build.gradle` 文件中添加如下配置:

    ```groovy
    task processProperties {
    inputs.file file('path/to/your.properties')
    doLast {
    def propsFile = file('path/to/your.properties')
    def props = new Properties()
    props.load(new InputStreamReader(new FileInputStream(propsFile), 'ISO-8859-1'))

    // Assuming all properties need to be encoded in UTF-8
    def writer = new OutputStreamWriter(new FileOutputStream(propsFile), 'UTF-8')
    props.store(writer, null)
    writer.close()
    }
    }

    preBuild.dependsOn processProperties
    ```

    这种方法可以确保在构建过程中将 `properties` 文件转换为 UTF-8 编码。

    ### 结论

    `properties` 文件默认使用 ISO-8859-1 编码是历史原因和兼容性的考虑,但现代开发工具(如 Gradle 和 Android Studio )允许开发者使用更广泛的编码(如 UTF-8 )来满足不同语言的需求。虽然没有全局设置修改编码,只能逐项目调整,但这是为了保持项目独立性和灵活性。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4756 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 04:00 · PVG 12:00 · LAX 20:00 · JFK 23:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.