我有一个带有"ñ"字符的字符串,我遇到了一些问题.我需要将此String编码为UTF-8编码.我通过这种方式尝试过,但它不起作用:
byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
如何将该字符串编码为utf-8?
我最近意识到我并不完全理解Java的字符串编码过程.
请考虑以下代码:
public class Main
{
public static void main(String[] args)
{
System.out.println(java.nio.charset.Charset.defaultCharset().name());
System.out.println("ack char: ^"); /* where ^ = 0x06, the ack char */
}
}
Run Code Online (Sandbox Code Playgroud)
由于控制字符在windows-1252和ISO-8859-1之间的解释不同,我选择了ackchar进行测试.
我现在用不同的文件编码,UTF-8,windows-1252和ISO-8859-1编译它.两者都编译为完全相同的事情,每个字节的字节经过验证md5sum.
然后我运行程序:
$ java Main | hexdump -C
00000000 55 54 46 2d 38 0a 61 63 6b 20 63 68 61 72 3a 20 |UTF-8.ack char: |
00000010 06 0a |..|
00000012
$ java -Dfile.encoding=iso-8859-1 Main | hexdump -C
00000000 49 …Run Code Online (Sandbox Code Playgroud) 在我们的业务中,我们需要记录进入我们服务器的每个请求/响应.目前,我们使用xml作为标准实现.如果我们需要调试/跟踪某些错误,则使用日志文件.
如果我们切换到协议缓冲区,我有点好奇,因为它是二进制的,记录请求/响应文件的最佳方法是什么?
例如:
FileOutputStream output = new FileOutputStream("\ files\log.txt"); request.build()的writeTo(outout).
对于在您的应用程序中使用了协议缓冲区的任何人,如何记录您的请求/响应,以防我们需要它进行调试?
谢谢
您好,有以下字符串,
Let\342\200\231s start with the most obvious question first. This is what an \342\200\234unfurl\342\200\235 is
它应该显示为 前三个数字 ( \342\200\231) 实际上表示一个八进制序列http://graphemica.com/%E2%80%99,它的 unicode 等效项是\u2019
类似地\342\200\234表示八进制序列http://graphemica.com/%E2%80%9C,其等效的 unicode 是\u201C
是否有任何库或函数可以用来将这些八进制序列转换为其等效的 unicode 序列?