我DOM4j用于解析和编写始终在UTF-8中的XML-Tree 。
我的XML文件包含德语特殊字符。解析它们不是问题,但是当我将树写入文件时,特殊字符将被转换为?字符。
我无法更改XML文件的编码,因为它仅限于UTF-8。
码
SAXReader xmlReader = new SAXReader();
xmlReader.setEncoding("UTF-8");
Document doc = xmlReader.read(file);
doc.setXMLEncoding("UTF-8");
Element root = doc.getRootElement();
// manipulate doc
OutputFormat format = new OutputFormat();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileWriter(file), format);
writer.write(doc);
writer.close();
Run Code Online (Sandbox Code Playgroud)
预期产量
...
<statementText>This is a test!Ä Ü ß</statementText>
...
Run Code Online (Sandbox Code Playgroud)
实际产量
...
<statementText>This is a test!? ? ?</statementText>
...
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一些 IO 包装的函数。
\n我当前的代码(有效)是:
\ngetUserHome :: IO String\ngetUserHome = do\n usr_id <- getRealUserID\n homeDirectory <$> getUserEntryForID usr_id\nRun Code Online (Sandbox Code Playgroud)\n我正在寻找一种更方便的表示法(不使用 -do关键字的表示法)。
没有任何 Monadic 沙拉我就写
\ngetUserHome = homeDirectory . getUserEntryForID . getRealUserID\nRun Code Online (Sandbox Code Playgroud)\n我猜想还有一个.尊重 Monad 的替代运算符..?但在我所有的寻找中,我还没有找到它。
我尝试过<$>,但这似乎不是我想要的:
src/Main.hs:49:21: error:\n \xe2\x80\xa2 Couldn\'t match type \xe2\x80\x98IO UserEntry\xe2\x80\x99 with \xe2\x80\x98UserEntry\xe2\x80\x99\n Expected type: UserID -> UserEntry\n Actual type: UserID -> IO UserEntry\n \xe2\x80\xa2 In the second argument of \xe2\x80\x98(<$>)\xe2\x80\x99, namely \xe2\x80\x98getUserEntryForID\xe2\x80\x99\n In the …Run Code Online (Sandbox Code Playgroud) 我std::string通过将 an 转换int为 a部分创建了以下内容string:
std::string text = std::string("FPS: " + std::to_string(1000 / d));
Run Code Online (Sandbox Code Playgroud)
示例输出:
每秒帧数:60
现在,我想专门为int零件添加前导零,以便获得以下输出:
每秒帧数:060
我已经知道如何stdout使用std::cout << std::setfill('0') << std::setw(5) .
但是我还没有找到简单std::to_string()转换的解决方案。