MySQL 데이터베이스 프로그램에서 이전에 기록한 데이터를 가져 오는 중에 문제가 있습니다. mysql과 Netbeans를 모두 검사했는데 인코딩은 utf-8 이었지만 여전히 이런 종류의 문제가 있습니다. 팁이 있습니까?Mysql에서 데이터를 가져올 때 문자 관련 문제가 발생했습니다.
MySQL은 문제없이 데이터를 보여줍니다 :
MySQL 데이터베이스 프로그램에서 이전에 기록한 데이터를 가져 오는 중에 문제가 있습니다. mysql과 Netbeans를 모두 검사했는데 인코딩은 utf-8 이었지만 여전히 이런 종류의 문제가 있습니다. 팁이 있습니까?Mysql에서 데이터를 가져올 때 문자 관련 문제가 발생했습니다.
MySQL은 문제없이 데이터를 보여줍니다 :
내가 넷빈즈와 맥에있어 8.2
내 응용 프로그램이 같은 데이터를 보여줍니다 질문은 정확하지 않으므로 시도 할만한 몇 가지 사항이 있습니다. 데이터베이스를 연결 한 후 데이터 삽입하기 전에
, 자바 프론트 엔드 응용 프로그램에서 그 문을 추가합니다 : 아마
SET character_set_connection="utf8"
SET character_set_client="utf8"
SET character_set_database="utf8"
SET character_set_results="utf8"
SET character_set_server="utf8"
SET character_set_system="utf8"
당신이 그들 모두를 필요로하지 것이다; 어떤 사람들이 트릭을 실험 해보십시오.
당신은 또한 MySQL의 콘솔에 로그인하고 명령을 실행하여 실제 설정을 볼 수는 :
mysql> show variables like '%character_set%';
업데이트 ... 내 테스트 중에이 문제는 JTextArea에서만 발생합니다. 실제로 JTextField는 데이터를 올바르게 수신합니다. 문제는 구성 요소입니다 – Magobin
그 문제는 Blob 콘텐트라고 생각합니다. 바이트를 가져 와서 Utf-8과 ISO-8859-1로 변환하려고 시도했지만 아무 것도 변경되지 않았습니다 ... 나는 또한 긴 텍스트에서 BLOB를 변경하고 데이터를 변경하려고했습니다. "è"에서 문법 오류가 발생했습니다 ... – Magobin
해결 : 문제는 Blob Content였습니다. TEXT 또는 MEDIUM TEXT를 사용하여 모든 것을 해결했습니다. 특수 문자에 문제가있는 사용자의 경우 Mysql에 문자열을 저장하는 가장 좋은 방법은 Prepared Statement입니다. – Magobin
이것은 생성 JTextArea에 모든 데이터가
private void popolaPianificazione(){
String tipo="Pianificazione";
String sql = "SELECT * FROM DomandePianificazione";
ResultSet res = null;
try {
res = MysqlStuff.richiediDatiSQL(sql);
if(res != null){
res.last();
if(res.getRow() != 0){
res.beforeFirst();
while(res.next()){
final String contatore = res.getString("id");
int conta = Integer.parseInt(contatore);
JPanel temp = new javax.swing.JPanel(new MigLayout("fill","grow"));
temp.setBorder(javax.swing.BorderFactory.createTitledBorder("DOMANDA "+"["+conta+"]"));
String domande = res.getString("Domanda");
domande.replace("è", "p");
javax.swing.border.Border border = BorderFactory.createEtchedBorder();
JTextArea domanda = new javax.swing.JTextArea(domande,2,2);
domanda.setBorder(border);
domanda.setBackground(colore);
domanda.setSize(400, 100);
domanda.setFont(font);
domanda.setMinimumSize(new Dimension(400,100));
domanda.setLineWrap(true);
domanda.setWrapStyleWord(true);
domanda.setOpaque(false);
domanda.setEditable(false);
JCheckBox rispostaC = new javax.swing.JCheckBox("Si/No");
JCheckBox rispostaCom = new javax.swing.JCheckBox("A completamento");
String rispostaCheck = res.getString("rispostaCheck");
String rispostaCompleta = res.getString("rispostaCompleta");
if (!"no".equals(rispostaCheck)){
rispostaC.setSelected(true);
}
else{
rispostaCom.setSelected(true);
}
JButton edit = new javax.swing.JButton("Modifica la domanda");
ButtonGroup buttonGroup1 = new javax.swing.ButtonGroup();
buttonGroup1.add(rispostaC);
buttonGroup1.add(rispostaCom);
rispostaC.setEnabled(false);
rispostaC.setRolloverEnabled(false);
rispostaCom.setEnabled(false);
rispostaCom.setRolloverEnabled(false);
temp.add(edit,"wrap");
edit.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
if ("Salva le modifiche".equals(edit.getLabel())){
System.out.println("Sto salvando...");
String pannello = "DomandePianificazione";
try {
SalvaDomanda(tipo,contatore,domanda,rispostaC,rispostaCom,pannello);
PanelPianificazione.revalidate();
PanelPianificazione.repaint();
} catch (SQLException ex) {
Logger.getLogger(ManageQuestionario.class.getName()).log(Level.SEVERE, null, ex);
}
을 SKIP 코드입니다
그리고 이것은 mysql에 데이터를 보내기위한 코드입니다 :
public static void inviaDatiSQL(String sql,String stat) throws SQLException, ClassNotFoundException{
UP = connetti();
System.out.println("INVIO dati a DB: \n"+ sql);
Statement stmt = null;
PreparedStatement test = UP.prepareStatement(sql);
test.setString(1, stat);
test.executeUpdate();
System.out.println("Finito !");
}
대체는 약간의 테스트입니다 .... – Magobin
좋아, 해결했습니다. 기본적으로 그것은 BLOB 인 Mysql의 Column 데이터에 관한 문제였습니다 ... 이미 LONGTEXT에서 변경하려고했지만, 단지 유형이 변경된 경우 모든 데이터베이스가 UTF-8로되어 있어도 충분하지 않았습니다! 데이터베이스와 열 테이블의 데이터 정렬 유형을 모두 변경해야했습니다.
지원해 주셔서 감사합니다.
알렉스
코드를 표시하지 않았으므로 도움을받을 수 없습니다. –
BLOB 인 경우 바이너리로 간주하고 필요한 유형으로 변환해야합니다. – Yaman