ปัญหาภาษาไทย จากการใช้ Java กับ Mysql
#1
Posted 03 January 2004 - 06:17 AM
เมื่อเราดึง ข้อมูลมาดู ทำไม่ถึงไม่เป็นภาษาไทยครับ มีวิธีการแก้หรือป่าวครับ ตอน Insert เป็นภาษไทยครับ
#2
Posted 03 January 2004 - 08:05 AM
Java Application , Java Applet , JSP หรือ Servlet คะ :-?
โฮ
#3
Posted 03 January 2004 - 01:13 PM
public class ThaiUtil {
/** Creates a new instance of ThaiUtil */
public static String Unicode2ASCII(String unicode) {
StringBuffer ascii = new StringBuffer(unicode);
int code;
for(int i = 0; i < unicode.length(); i++) {
code = (int)unicode.charAt(i);
if ((0xE01<=code) && (code <= 0xE5B ))
ascii.setCharAt( i, (char)(code - 0xD60));
}
return ascii.toString();
}
public static String ASCII2Unicode(String ascii) {
StringBuffer unicode = new StringBuffer(ascii);
int code;
for(int i = 0; i < ascii.length(); i++) {
code = (int)ascii.charAt(i);
if ((0xA1 <= code) && (code <= 0xFB))
unicode.setCharAt( i, (char)(code + 0xD60));
}
return unicode.toString();
}
}
#5
Posted 03 January 2004 - 04:37 PM
ถ้าเปรียบเทียบกับหัวข้อเรือง (รบกวนเรื่อง Mysql หน่อยครับ ของคุณ Sorut ) เราจะใส่ไว้ตรงไหนครับ เพราะผมดู source Code แล้วหน้าสนครับ
รบกวนหน่อยครับผมไม่ค่อยเก่งคับ
#6
Posted 03 January 2004 - 05:33 PM
String value="ทดสอบ";
String sql="INSERT INTO ชื่อตาราง(field1) VALUES('"+ThaiUtil.Unicode2ASCII(value)+"')";ตัวอย่างการใช้ลองดูนะครับ
#7
Posted 04 January 2004 - 04:42 AM
---------- Compile ----------
C:java1inputexmysql.java:100: inner classes cannot have static declarations
public static String Unicode2ASCII(String unicode) {
^
C:java1inputexmysql.java:111: inner classes cannot have static declarations
public static String ASCII2Unicode(String ascii) {
^
2 errors
Normal Termination
Output completed (1 sec consumed).
แต่พอผมเอา static ออก ก็จะเป็นอย่างนี้ครับ
---------- Compile ----------
C:java1inputexmysql.java:72: non-static method Unicode2ASCII(java.lang.String) cannot be referenced from a static context
stmt2.executeUpdate(" INSERT INTO tablename(Name,Lastname) VALUES (' "+ThaiUtil.Unicode2ASCII(a.getText( ))+" ' ,' "+ThaiUtil.Unicode2ASCII(b.getText( ))+" ')");
^
C:java1inputexmysql.java:72: non-static method Unicode2ASCII(java.lang.String) cannot be referenced from a static context
stmt2.executeUpdate(" INSERT INTO tablename(Name,Lastname) VALUES (' "+ThaiUtil.Unicode2ASCII(a.getText( ))+" ' ,' "+ThaiUtil.Unicode2ASCII(b.getText( ))+" ')");
^
2 errors
Normal Termination
Output completed (1 sec consumed).
ผมแก้ไข้ตรงนี้ครับ
[color="green"][color=green]stmt2.executeUpdate(" INSERT INTO tablename(Name,Lastname) VALUES (' "+ThaiUtil.Unicode2ASCII(a.getText( ))+" ' ,' "+ThaiUtil.Unicode2ASCII(b.getText( ))+" ')");
#8
Posted 05 January 2004 - 03:06 PM
ลองดูอีครั้งนะครับ
#9
Posted 08 January 2004 - 07:02 AM
Quote
public static String Unicode2ASCII(String unicode) {
^
เมดธอดที่นิยามเป็นแบบ static ไม่สามารถนิยามใน Inner class ได้ครับ ลองย้ายเมดธอดนี้ไปอยู่ในระดับเดียวกับ class
public class A {
private class B {
...
public static void methodC() { // นิยามตรงนี้ไม่ได้
...
}
}
}ลองแก้เป็น
public class A {
public static void methodC() { // นิยามในระดับนี้แทน
...
}
private class B {
... // คราวนี้ B เรียกใช้ methodC(); ได้แล้ว
}
}
#10
Posted 08 January 2004 - 07:05 AM
Quote
---------- Compile ----------
C:java1inputexmysql.java:72: non-static method Unicode2ASCII(java.lang.String) cannot be referenced from a static context
stmt2.executeUpdate(" INSERT INTO tablename(Name,Lastname) VALUES (' "+ThaiUtil.Unicode2ASCII(a.getText( ))+" ' ,' "+ThaiUtil.Unicode2ASCII(b.getText( ))+" ')");
แปลกใจที่ว่าทำไม stmt2 นิยามเป็นตัวแปร static หรือครับ ทำไมถึงฟ้องว่าไม่สามารถอ้างถึงเมดธอด Unicode2ASCII ได้
#12
Posted 11 January 2004 - 07:12 AM
Quote
อืม ตกลงได้ลองวิธีไหนไปแล้วบ้างครับ ที่บอกว่ายังไม่ได้หมายความว่าตอนนี้โปรแกรมคอมไพล์และรันผ่านแล้วแต่ยังแสดงภาษาไทย
ไม่ได้ใช่มั้ยครับ ขอข้อมูลเพิ่มเติมด้วยครับ
#13
Posted 11 January 2004 - 05:53 PM
VALUES (' "+new ThaiUtil().Unicode2ASCII(a.getText( ))+" ' ,' "+new ThaiUtil().Unicode2ASCII(b.getText( ))+" ')"ขอบคุณทุกท่านมากครับ

Help













