簡體   English   中英

檢查數據庫中的字符串是否是用Java編寫的utf-8編碼

[英]Checking if string from database is utf-8 encoded in Java

現在2天,我一直在尋找方法來檢查數據庫中的值是否是用Java編碼的utf-8編碼。 到目前為止,我已經讀過Java中的字符串使用的是unicode(utf-16)編碼。 我嘗試過這里這里的建議答案,但似乎都沒有正常工作。 第一個總是返回false,而第二個總是返回true。

我嘗試檢查的字符串示例如下,其中除最后一個字符串之外的所有內容都是utf8編碼的:

ABCDEF,片假名,カタカナ和 K { ` F b N G [

我一直在嘗試的一個想法是使用utf-8編碼獲取字符串的字節,然后使用默認編碼獲取字符串的字節,然后比較如下:

byte[] utf8byte = str.getBytes("UTF-8");
byte[] bytes = str.getBytes();
if(utf8byte.length == bytes.length) {
   return true;
}

但是根據這個邏輯,只有第一個字符串會返回true。 根據我的理解,這是因為並非所有字符都只使用1個字節。

那么,您可以建議檢查數據庫中的字符串是否為utf-8編碼的最佳方法是什么? 我真的很感激任何想法。 提前致謝。

你不能。

Java數據庫驅動程序從數據庫中讀取編碼的字節字符串,並將其轉換為Java字符串。 數據庫可以選擇將字符串發送為UTF-8,UTF-16或驅動程序可以理解的任何其他編碼。

一旦它是Java字符串,它就不再包含原始編碼的任何痕跡。 getBytes()將使用您的系統字符編碼來解碼字符串。 它與數據庫編碼無關。

是的,Java使用UTF-16,但它無關緊要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM