UUID编码为ascii而不是utf-8

UUID编码为ascii而不是utf-8,utf-8,ascii,encode,uuid,Utf 8,Ascii,Encode,Uuid,例如,在几乎所有的示例中,UUID都编码为utf-8 “aa4aaa2c-c6ca-d5f5-b8b2-0b5c78ee2cb7”.getBytes(标准字符集.utf8)) UUID不是ascii格式?为什么每个人都编码到utf-8?你说的“UUID不是ascii格式”是什么意思?UUID是一个128位的数字,这是一种(不明确的)将其编码为字符串的方法。你的意思是“为什么人们在ASCII等价的情况下使用UTF-8?”因为除非你有理由不这样做,否则在大多数情况下使用UTF-8是一个好习惯。当它等

例如,在几乎所有的示例中,UUID都编码为utf-8

“aa4aaa2c-c6ca-d5f5-b8b2-0b5c78ee2cb7”.getBytes(标准字符集.utf8))


UUID不是ascii格式?为什么每个人都编码到utf-8?

你说的“UUID不是ascii格式”是什么意思?UUID是一个128位的数字,这是一种(不明确的)将其编码为字符串的方法。你的意思是“为什么人们在ASCII等价的情况下使用UTF-8?”因为除非你有理由不这样做,否则在大多数情况下使用UTF-8是一个好习惯。当它等效于ASCII时,它是相同的,所以这无关紧要。当它不等同于ASCII时,您通常需要UTF-8。

您所说的“UUID不是ASCII格式”是什么意思?UUID是一个128位的数字,这是将其编码为字符串的一种(不明确的)方法。你的意思是“为什么人们在ASCII等价的情况下使用UTF-8?”因为除非你有理由不这样做,否则在大多数情况下使用UTF-8是一个好习惯。当它等效于ASCII时,它是相同的,所以这无关紧要。当它不等同于ASCII时,通常需要UTF-8。

UUID被编码为128位对象(请参阅)。您的示例是UUID值的十六进制文本表示


UUID不需要特定的编码。我猜使用UTF-8可能是因为它是各种交换格式(例如JSON)的默认编码。

UUID被编码为128位对象(请参阅)。您的示例是UUID值的十六进制文本表示


UUID不需要特定的编码。我猜使用UTF-8可能是因为它是各种交换格式(例如JSON)的默认编码。

@heisenberg_uu这就引出了一个问题:为什么要用UUID文本表示的字节表示,而不是UUID本身的字节表示。@TomBlodget稍后进行散列。byte[]hashedPassword=md.digest(passwordToHash.getBytes(StandardCharsets.UTF_8))@海森堡?这就引出了一个问题:为什么您想要UUID文本表示的字节表示,而不是UUID本身的字节表示。@TomBlodget稍后再散列。byte[]hashedPassword=md.digest(passwordToHash.getBytes(StandardCharsets.UTF_8));嗨,罗布,谢谢你的回复!我的疑问是,我能理解的一些语言UUID可以是数字、字母和其他符合ascii的语言,这意味着俄文字符在UUID中是有效的文本表示形式……因此,在这种情况下,就等同于asciiI。我不明白“俄文字符在UUID中是有效的文本表示形式”是什么意思UUID只是一个数字。其规范字符串形式在RFC 4122中定义(与ISO/IEC 9834-8:2004中的官方定义兼容)。RFC列出了可以包含的确切字符及其结构。列表中没有俄语字符。我之所以说这种格式不明确,是因为它对输入不区分大小写,这意味着两个不同的字符串对于reply可能是相同的UUID.Tks。我可以测试,我想说的是:让我们考虑下面的字符串,“Teste”……作为字节,字符串OK。用ascii编码的“teste”将结果:01110101011001011100110111010001100101用utf-8编码的“teste”将结果:01110111001011100111111010001100101(相同的东西)用ascii编码的“testeüüä”将结果:0111010101100011110011101000110010111111111111111111111111“testeüä”在UTF-8中编码的结果是:0111010011001011101011100100111010011101001100100111011110011001001110100100(因为UuSo不同)是UUID的相同的东西,如果我认为一个UUID在十六进制中,并且我必须编码,如果它的ASCII或UTF-8的结果不一样,结果是永远不变的。“以ASCII编码;您可能正在考虑其他编码,例如拉丁语-1。这是一个完美的例子,说明了为什么现在几乎所有人都在使用UTF-8:它可以处理*任何Unicode代码点,但它不会为(非常常见的)ASCII子集(如UUID)浪费任何空间。嗨,Rob,谢谢你的回复!我的疑问是,我能理解的一些语言UUID可以是数字、字母和其他符合ascii的语言,这意味着俄文字符在UUID中是有效的文本表示形式……因此,在这种情况下,就等同于asciiI。我不明白“俄文字符在UUID中是有效的文本表示形式”是什么意思UUID只是一个数字。其规范字符串形式在RFC 4122中定义(与ISO/IEC 9834-8:2004中的官方定义兼容)。RFC列出了可以包含的确切字符及其结构。列表中没有俄语字符。我之所以说这种格式不明确,是因为它对输入不区分大小写,这意味着两个不同的字符串对于reply可能是相同的UUID.Tks。我可以测试,我想说的是:让我们考虑下面的字符串,“Teste”……作为字节,字符串OK。用ascii编码的“teste”将结果:01110101011001011100110111010001100101用utf-8编码的“teste”将结果:01110111001011100111111010001100101(相同的东西)用ascii编码的“testeüüä”将结果:0111010101100011110011101000110010111111111111111111111111“testeüä”在UTF-8中编码的结果是:0111010011001011101011100100111010011101001100100111011110011001001110100100(因为UuSo不同)是UUID的相同的东西,如果我认为一个UUID在十六进制中,并且我必须编码,如果它的ASCII或UTF-8的结果不一样,结果是永远不变的。“以ASCII编码;您可能正在考虑其他编码,例如拉丁语-1。这是一个完美的例子,说明了为什么现在几乎所有人都使用UTF-8来处理所有事情:它可以处理*任何Unicode代码点,但它不会为(非常常见的)ASCII子集(如UUID)浪费任何空间。