일본어 처리.. 도와주세요.

익명 사용자의 이미지

안녕하세요...

프로젝트를 수행하는 중에 복병을 만났습니다.
환경은 linux 2.4에 MySQL2.40(?) Apache+Tomcat+Jsp로 구성이 되었죠.

문제는,

1) html의 캐릭터셋을 UTF-8으로 셋팅을 하고 한페이지 안에
일본어/영어/한글을 보여줍니다 -> 잘됩니다.
2) 사용자인터페이스를 통해 MySQL에 데이터를 영어/일본어/한글로
저장합니다. 그리고 결과를 역시 다국어로 봅니다 -> 잘됩니다.
3) 텍스트 파일에 있는 일본어를 DB에 저장합니다. 그리고
웹환경 (HTML with UTF-8)에서 봅니다.
다 깨집니다..
폰트가 설치되고 안되고의 문제가 아닙니다. 제 피씨에는 폰트가
설치되어있으니까요. 문제는 텍스트 파일에 있는 데이터를 라인단위로
읽어서 디비에 저장을 하는데, 이걸 그냥 텍스트로 저장해도 또 UTF-8
으로 바꿔서 저장해도 웹상에서는 다 깨진다는 점입니다.

환경구성상 안된다는 말로는 설명이 안되는 것이,
2)번에서 말씀드린 것 처럼 웹을 통해서 저장을 하면 정상적으로 저장이
되고 보이기도 정상적으로 보인다는 거죠..

아마도 제가 배치프로그램을 써서 데이터를 텍스트에서 읽어서 저장할
때 사용한 방법이 잘못된 것 같은데 어디가 문제인지 알 수가 없네요.
UTF-8으로 일반문자열을 바꿔서 저장하는 소스는 java.sun.com에 있는
아래의 소스를 이용해서 작성했습니다.
혹시 도움을 주실 수 있을 지요???

-------------------

/*
* Copyright (c) 1995-1998 Sun Microsystems, Inc. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for NON-COMMERCIAL purposes and without
* fee is hereby granted provided that this copyright notice
* appears in all copies. Please refer to the file "copyright.html"
* for further important copyright and licensing information.
*
* SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
* THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*/

import java.io.*;
import java.util.*;

public class StringConverter {

public static void printBytes(byte[] array, String name) {
for (int k = 0; k < array.length; k++) {
System.out.println(name + "[" + k + "] = " + "0x" +
UnicodeFormatter.byteToHex(array[k]));
}
}

public static void main(String[] args) {

System.out.println(System.getProperty("file.encoding"));
String original = new String("A" + "\u00ea" + "\u00f1"
+ "\u00fc" + "C");

System.out.println("original = " + original);
System.out.println();

try {
byte[] utf8Bytes = original.getBytes("UTF8");
byte[] defaultBytes = original.getBytes();

String roundTrip = new String(utf8Bytes, "UTF8");
System.out.println("roundTrip = " + roundTrip);

System.out.println();
printBytes(utf8Bytes, "utf8Bytes");
System.out.println();
printBytes(defaultBytes, "defaultBytes");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

} // main

}

익명 사용자의 이미지

저도 요즘 UTF-8코드에 관심이 많아서 공부를 좀 했는데 UTF-8 코드와 일본어 자체 코드값이 다른것으로 압니다.

우리나라를 예를 들자면 우리나라에서는 KSC완성형을 주로 사용하는데 이것은 UTF-8코드와는 다르죠.

KSC텍스트로 저장된 문서를 UTF-8코드로 본다면 당연히 깨지겠죠. 일본어도 마찬가지라 생각됩니다.

일본어 텍스트를 UTF-8로 코드 변환해서 저장하고 UTF-8로 본다면 문제가 해결 될것 같습니다.

익명 사용자의 이미지

^^;; 죄송합니다. 이미 그렇게 하고 계셨군요.
html에서 는 \r\n(?) 이렇게 다음줄로 넘기더군요.
혹시 이런 문제는 아닐까요?

ㅡ.ㅡ 초보의 횡설수설이었습니다. 답변이 맞지않으면 제발 지워 주세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.