将ant从1.6升级到1.8.3版本后,Windows的信息资源。用Ant构建的dll已损坏。
以前,此值已正确保存到version-info资源中:
< code > product . Copyright = \ u00a 9 Copyright 20xx-20xx yyyyyyyyy \ u 2122 (so(c)和TM符号显示正确)。
升级后Ant默认编码更改为UTF-8,这是意料之中的,但目前版权字符串如下所示:
© Copyright 20xx-20xx yyyyyy ™
这不是控制台问题-我用十六进制编辑器和文件属性对话框检查过-两者都显示不正确。
查看文件的< code>hexdump,我看到了下面的(明显不正确的)映射
\u00a9 -> 0x00c2 0x00a9
\u2122 -> 0x00e2 0x201e 0x00a2
这里的问题是 Ant 将 UTF-8 字节(不是 Unicode 字符串)编码为 16 位字符,并将其写入版本信息。
虽然这看起来像是ant中的一个bug,但我想问问是否有人设法找到了解决这个问题或类似问题的方法。
以下是脚本的一些片段:项目属性文件:
...
product.copyright=(c) Copyright 2005-2012 Clarabridge
....
build.xml中包含的文件:
<versioninfo id="current-version" if="is-windows"
fileversion="${product.version}"
productversion="${product.version}"
compatibilityversion="1"
legalcopyright="${product.copyright}"
companyname="${product.company}"
filedescription="${ant.project.name}"
productname="${ant.project.name}"
/>
...
<cc objdir="${target.dir}/${target.platform}/obj"
outfile="${target.dir}/${target.platform}/${ant.project.name}"
subsystem="other"
failonerror="true"
incremental="false"
outtype="shared"
runtime="dynamic"
>
<versioninfo refid="current-version" />
<compiler refid="compiler-shared-${target.platform}" />
<compiler refid="rc-compiler" />
<linker extends="linker-${target.platform}">
<libset dir="${target.dir}/${target.platform}/lib" libs="${lib.list}" />
</linker>
<fileset dir="${src.dir}" casesensitive="false">
<include name="*.cpp"/>
</fileset>
</cc>
您的错误是某些东西将UTF-8字符误解为8位字符!!!
顺便说一句,Java不使用16位字符;那将是UCS-2。Java使用UTF-16,它和UTF-8一样是可变宽度编码。让多少Java程序员苦恼!
UTF-8有8位代码单元,而UTF-16有16位代码单元;两者都不支持“8位字符”或“16位字符”。如果您发现自己编写的代码认为他们支持,那么您只是编写了错误的代码。
您的输出是错误地显示 UTF-8 的结果,就好像它是拉丁语 1,它确实使用 8 位字符。但是,您没有。
我在Win 7下运行的是Ant 1.8.1。而我的Java版本是1.7_17。 我在我的构建文件中添加了以下2行用于诊断。 而结果就是 知道发生了什么吗? 蚂蚁1.8.1中的硬编码是它能显示的最高java版本是1.6吗?
我在安装了Javajdk(和jre)1.6的Unix机器上通过Eclipse Juno生成了一个ant文件。当在build.xml文件所在的eclipse之外的机器上运行ant时,一切都很顺利。 现在,问题是当我尝试在另一台机器上运行ant时,其中jdk和jre 1.6都安装了。这是我在运行RedHat 3的另一台机器上得到的结果(无法更改): 当我在build.xml文件中添加这一行时,我得到以
问题内容: 例如,如何转换字符串。我从网站获得的字符串,未在中进行编码。它工作在计划只是罚款使用Swing( ),但是当我过去的链接罐子Windows控制台(要运行的应用程序),它不显示在字符串中正确的字符的字符和。 我从网站上得到那串 。如何在Swing应用程序中进行编码或显示,因此当我运行应用程序时,它将向我显示此字符(以及课程的其他unicode字符(“Ž”,“ž”,“č”和“Š”) )?
我需要将输入字符串中的unicode字符转义为UTF-16或UTF-32转义序列。例如,输入字符串文字< code >“吃,喝,愛" 应该转义为< code >“吃喝,\ u611b”。以下是排序表中的规则: Escape | Unicode码位 “\u” 十六进制 十六进制 十六进制|U 到 U FFFF 范围内的 Unicode 代码点(包括与编码的十六进制值相对应)。 '\U'HEX HEX
我正在尝试将纯文本文件加载到中,由(到列表中)或(到)分隔。每个对话框块可以是不同的长度。 我有一个简单的读取文件行,它读取txt文件的每一行,并将每一行作为一个新项添加到中。下面的代码是我试图整理原始数据并创建双列表的地方。 代码中有一个问题,我似乎找不到如何修复它。现在我得到的结果是:输出text1,输出text1+text2,输出text1+text2+text3,以此类推。 在将列表添加到
问题内容: 我使用函数对AJAX发送到PHP的JS对象进行字符串化处理。 当JSON.stringify函数将Unicode字符编码为格式(例如)时,就会出现问题。我的问题是如何在PHP中将这些字符转换为常规unicode字符? 问题答案: 看到输出UTF-16?有点卡住 这将转换为UTF-8: