페이스북 게시글 파싱후 mysql DB에 입력 시도중 이모티콘에 대한 유니코드 문제가 발생
mysql의 HY000 1366 에러를 발생 시켰다.
일반적으로 한글에 대한 유니코드 문제였지만 이번엔 유니코드 방식의 문제로 판단되어 뒤지고 뒤져 해결책을 발견했다.
문제 되는 문자열을 아래 방식으로 부분 치환 처리 하여 문제를 해결 하였다.
String val = vo.getContent(); if ( val != null ){
StringBuffer buf = new StringBuffer(); int len = val.length(); for ( int i = 0 ; i < len ; i++ ){ char c = val.charAt(i); if ( 0xD800 <= c && c <= 0xDBFF || 0xDC00 <= c && c <= 0xDFFF ){ }else{ buf.append(c); } } vo.setContent(buf.toString()); }
int to string String myString = Integer.toString(my int value);
String str = "" + i;
String to int
int i = Integer.parseInt(str);
int i = Integer.valueOf(str).intValue();
double to String
String str = Double.toString(i);
long to String
String str = Long.toString(l);
float to String
String str = Float.toString(f);
String to double
double d = Double.valueOf(str).doubleValue();
String to long
long l = Long.valueOf(str).longValue();
long l = Long.parseLong(str);
String to float
float f = Float.valueOf(str).floatValue();
decimal to binary
int i = 42;
String binstr = Integer.toBinaryString(i);
decimal to hexadecimal
int i = 42;
String hexstr = Integer.toString(i, 16);
String hexstr = Integer.toHexString(i);
--(with leading zeroes and uppercase)
public class Hex {
public static void main(String args[]){
int i = 42;
System.out.print(Integer.toHexString( 0x10000 | i).substring(1).toUpperCase());}
}
hexadecimal (String) to integer
int i = Integer.valueOf("B8DA3", 16).intValue();
int i = Integer.parseInt("B8DA3", 16);
ASCII code to String
int i = 64;
String aChar = new Character((char)i).toString();
integer to ASCII code (byte)
char c = 'A';
int i = (int) c; // i will have the value 65 decimal