Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 写入xml时文件名中的字节顺序标记_Android_Xml_Byte Order Mark - Fatal编程技术网

Android 写入xml时文件名中的字节顺序标记

Android 写入xml时文件名中的字节顺序标记,android,xml,byte-order-mark,Android,Xml,Byte Order Mark,我有一种方法,其中一个.txt文件用Scanner解析,用DocumentBuilder重新组装,然后用TransformerFactory转换成一个.xml文件 除了一点不便之外,一切都正常:以这种方式创建的文件在其名称的开头包含我认为是BOM的内容。我正在用UTF-8编码 它保存在%EF%BB%BFexample.xml下,而不是example.xml下 我怎样才能避免呢 编辑:正如您在评论中所看到的,我指出了一种可能性,即扫描仪从userText读取的第一行fileTitle可能包含UTF

我有一种方法,其中一个.txt文件用
Scanner
解析,用
DocumentBuilder
重新组装,然后用
TransformerFactory
转换成一个.xml文件

除了一点不便之外,一切都正常:以这种方式创建的文件在其名称的开头包含我认为是BOM的内容。我正在用UTF-8编码

它保存在
%EF%BB%BFexample.xml
下,而不是
example.xml

我怎样才能避免呢

编辑:正如您在评论中所看到的,我指出了一种可能性,即
扫描仪从
userText
读取的第一行
fileTitle
可能包含
UTF-8
的BOM,结果是正确的(再次,请参见评论)


为了完成:

我包含了以下简短代码,用于从字符串中删除BOM表,该字符串被提取出来用作正在创建的.xml文件的标题名

char[] titleChars = fileTitle.toCharArray();

        String cutTitle = "";
        for(int i=1; i<titleChars.length;i++){
            cutTitle = cutTitle+titleChars[i];
        }

String fileOutputName = cutTitle+".xml";
char[]titleChars=fileTitle.tocharray();
字符串cutitle=“”;

对于(int i=1;iI怀疑BOM已经存在于您的
userText
文件中,并且也是从
扫描仪返回的。查看是否确实如此。
userText
位于
UTF-8
中,如果这是您的意思的话。链接中的问题听起来很相似,但通过
扫描仪从中检索到的第一行>保存在一个
字符串中
,该字符串不包含所述BOM,我使用调试器查看了它。这是怎么回事?您是如何验证它不包含BOM的?请注意,如果您只是打印或记录它,它可能不可见。请尝试打印或记录
文件标题。codePointAt(0)
,如果这是BOM,则应给出0xfeff=65279。[编辑:或要求调试器计算该表达式。]您是对的:
fileTitle.codePointAt(0)
返回65279和
fileTitle.codePointAt(1)
返回:79,这是
userText
@Thomas的实际第一个字母:您应该根据您的评论添加答案。
char[] titleChars = fileTitle.toCharArray();

        String cutTitle = "";
        for(int i=1; i<titleChars.length;i++){
            cutTitle = cutTitle+titleChars[i];
        }

String fileOutputName = cutTitle+".xml";