옆차기
2008-03-31 14:53:11
8
4648

xml을 생성하는데 잌 같은 글자가 ? 나옵니다.


현재 DB에 들어가 있는 내용을 xml로 만들어서 사용하고 있는데요

xml 파일을 만들때 맞춤법이 맞지 않으면 (ex 잌쌰쓔찿딫 ) 요런 글자들은 물음표(?)로 나와버립니다.

 

DB는 utf-8 형식으로 되어있습니다.

윈도우에서 테스트 할때는 잘됬는데

똑같은 소스를 리눅스에서 사용하니 저렇게 되서요.

xml은 아래와 같이 만듭니다.

인코딩 type은  euc-kr 입니다.

 

 public void createXML(String content, String en_type) throws ParserConfigurationException, TransformerException, IOException{
  String create_file_path=UDLOAD_SSDATAPATH + "/xmlTest/";
  
  java.io.File fNew = new java.io.File(create_file_path);
  if(!fNew.exists()) {
   fNew.mkdirs();
  }
  
  // 1. XML 생성
  // 1.1 XML 생성
  Document xml;
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  DocumentBuilder builder = null;
  builder = factory.newDocumentBuilder();
  
  xml = builder.newDocument();

     Element root = xml.createElement("Root");
     xml.appendChild(root);
  
     Comment comment;
    
  comment =xml.createComment("test start");
  root.appendChild(comment);
  
     root.appendChild(setElement("content"   , xml, content    ));

  comment =xml.createComment("test end");
  root.appendChild(comment);
  
     TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = null;
  transformer = transformerFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty(OutputKeys.ENCODING, en_type );                  
  transformer.transform(new DOMSource(xml), new StreamResult(new FileWriter(create_file_path+"/test.xml")));

 }

 

 

 //  XML ID 넣기
 public Element setElement(String element_name,Document xml,  String content){
  
  Element child_element = xml.createElement(element_name);
  CDATASection textNode = xml.createCDATASection(content);
  child_element.appendChild(textNode);
    
  return child_element;
 }
  

0
0
  • 답변 8

  • 옆차기
    2008-03-31 15:32:16
    웹 화면에서는 잘 보이는데
    tomcat log를 콘솔 화면으로 봐도 ? 로 나오는군요..
    아..나..
    0
  • 허허실실
    2008-03-31 15:47:17
    한글관련문제는 조그만 찾아봐도 많은 자료가 있습니다.
    원인만 간단히 설명하면
    EUC-KR은 한글 확장형을 완벽하게 지원하지 않습니다.
    window에서는 사용하는 기본 charset인 MS949는 EUC-KR를 확장하여 한글을 확장형까지 지원하도록 되어 있습니다.
    유니스계열에서는 완벽한 한글 지원을 하고 싶으시면 euc-kr이 아닌 UTF-8같은 유니코드기반의 charset를 지정하세요.
    0
  • 옆차기
    2008-03-31 16:00:54
    tomcat의 server.xml이나 web.xml의 인코딩 설정은 모두 utf-8로 되어있습니다.
    모든 jsp페이지도 utf-8로 생성되어 있구요. 웹에서 볼때 이상이없게 보입니다.

    지금 문제가 고객의 글이 웹에서는 잘보이는데 그내용을 xml로 만들엇 출력했을때
    ? 나와서 문제가 된경우입니다.

    한글지원 문제가 맞는거 같은데.. 어디 부분을 수정해야 할지 모르겠네요 ㅠㅠ
    0
  • 허허실실
    2008-03-31 16:11:26
    리눅스 환경변수 lang이 뭘로 설정되어 있나요?
    0
  • 옆차기
    2008-03-31 17:05:36
    헛.. ㅠ^ㅠ 그렇군요!
    허허실실님 감사..
    저걸 생각 못했네요..

    lang= ko_KR.eucKR -> ko_KR.UTF-8 로 변경하고
    xml 인코딩도 UTF-8로 변경하니 글자가 잘 나옵니다.
    ㅎㅎ 감사합니다.

    그런데 리눅스 자체의 언어설정이 파일 생성 이외에 기존 웹서버에 영향을 미칠까요?
    현재 기본적은 글쓰기 테스트는 잘되고 있습니다만.. ㅎㅎ 테스트중입니다.


    저 그런데 이제 콘솔에서 한글이 전부 깨져나오는 군요.. ㅎㅎ;;
    膺?媛醫媛 珥?몄듬琉. 弛湲곕? 應ъ 이런 애들이 튀어나오는 군요 딜레마에 빠졌습니다.
    ㅠㅠ

    허허실실님 답변 감사합니다.

    lang 설정은 생각도 못했어요 ㅎㅎ
    0
  • 옆차기
    2008-03-31 17:39:55
    膺?媛醫媛 珥?몄듬琉. 弛湲곕? 應ъ 이애들은 서버의 언어설정과
    제 윈도우 xp의 언어설정이 달라서 깨지는 걸로 보이네요

    ssh 자체에 언어설정 변경하는 곳을 찾고있습니다. (.. ㅇㅇ..)
    여하튼 끝~~
    0
  • 허허실실
    2008-03-31 18:17:27
    해결하셨다니 다행이네요..

    한글문제에 있어서 가장 좋은게 모든 (시스템, Java, Was, DB 등등) charset을 하나(UTF-8 같은 것으로)로 통일해주는 거죠..
    그러나 가끔 외부 다른 시스템과의 연동에서 연동시스템의 charset으로 지정해줘야할 경우가 종종 있습니다.
    그럴 경우 실행 shell에서 lang를 설정해주면 됩니다.
    tomcat같은 경우에는 tomcat 실행 shell에 추가해주면 되고요..
    0
  • 뒤차기_열라초보예요
    2008-04-01 10:45:34
    넵^^ 감사합니다.
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.