[英]get char value in java
如何在Java中獲取char的UTF8代碼? 我有字符'a',我想要值97我有字符'é',我想要值233
這是更多值的表
我嘗試過Character.getNumericValue(a)
但是對於a它給了我10個而不是97個,為什么?
這似乎很基本,但是任何幫助將不勝感激!
char
實際上是包含char
的unicode值(准確地說是UTF-16-您需要兩個 char
表示BMP之外的字符)的數字類型。 您可以使用int
來完成所有操作。
Character.getNumericValue()
嘗試將字符解釋為數字。
您可以為此使用java.lang.String的codePointAt(int index)方法。 這是一個例子:
"a".codePointAt(0) --> 97
"é".codePointAt(0) --> 233
如果要避免不必要地創建字符串,則以下內容也可以工作,並且可以用於char數組:
Character.codePointAt(new char[] {'a'},0)
這些“ UTF-8”代碼並非如此。 根據Unicode代碼圖表 ,它們實際上只是Unicode值。
因此,“é”實際上是U + 00E9-在UTF-8中,它將由兩個字節{0xc3,0xa9}表示。
現在要獲取Unicode值-或更准確地說是UTF-16值,因為這是Java在內部使用的-您只需要將值轉換為整數即可:
char c = '\u00e9'; // c is now e-acute
int i = c; // i is now 233
這樣會產生良好的結果:
int a = 'a';
System.out.println(a); // outputs 97
同樣地:
System.out.println((int)'é');
打印233
。
請注意,第一個示例僅適用於標准和擴展ASCII字符集中包含的字符。 第二個適用於所有Unicode字符。 您可以通過將char乘以1來獲得相同的結果。System.out.println(1 *'é');
我的方法是這樣的:
char c = 'c';
int i = Character.codePointAt(String.valueOf(c), 0);
// testing
System.out.println(String.format("%c -> %d", c, i)); // c -> 99
您的問題不清楚。 您是否想要特定字符的Unicode代碼點(這就是您提供的示例),還是要將Unicode代碼點轉換為UTF-8字節序列?
如果是前者,那么我建議您訪問http://www.unicode.org/上的代碼表。
如果是后者,則以下程序將執行此操作:
public class Foo
{
public static void main(String[] argv)
throws Exception
{
char c = '\u00E9';
ByteArrayOutputStream bos = new ByteArrayOutputStream();
OutputStreamWriter out = new OutputStreamWriter(bos, "UTF-8");
out.write(c);
out.flush();
byte[] bytes = bos.toByteArray();
for (int ii = 0 ; ii < bytes.length ; ii++)
System.out.println(bytes[ii] & 0xFF);
}
}
(也有在線Unicode到UTF8的頁面,但此機器上沒有URL)
您可以創建一個簡單的循環以列出所有可用的UTF-8字符,如下所示:
public class UTF8Characters {
public static void main(String[] args) {
for (int i = 12; i <= 999; i++) {
System.out.println(i +" - "+ (char)i);
}
}
}
有一個開源庫MgntUtils,它具有實用程序類StringUnicodeEncoderDecoder。 該類提供了靜態方法,可以將任何String轉換為Unicode序列,反之亦然。 非常簡單實用。 要轉換字符串,您只需執行以下操作:
String codes = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(myString);
例如,字符串“ Hello World”將轉換為
“ \\ u0048 \\ u0065 \\ u006c \\ u006c \\ u006f \\ u0020 \\ u0057 \\ u006f \\ u0072 \\ u006c \\ u0064”
它適用於任何語言。 這里是文章的鏈接,該文章解釋了有關該庫的所有詳細信息: MgntUtils 。 查找字幕“字符串Unicode轉換器”。 本文為您提供了指向Maven Central的鏈接,您可以在其中獲取工件,而可以從github上獲取項目本身。 該庫帶有編寫良好的javadoc和源代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.