솔라리스에서 일본어변환문제
현재 솔라리스 8 에서 apache와 톰캣, 오라클을 이용하여
일본어로 번역된 웹서버를 만들려고 합니다.
그런데 웹에서 볼때 일어가 ??? 이런식으로 깨져나와서 문의 드립니다.
JSP 안에 있는 일어는 제대로 나옵니다. 그런데 오라클에서 가져온 데이터 값이나, java 에서 메세지를 뿌려주는 부분은 ????로 다 나와 버리네요.
환경세팅을 다른곳에서 해서 자세히 어떻게 설치 하였는지는 모르지만 그쪽에서는 OS나 oracle 일어세팅을 했다고 하는데요. 못 믿겠네요. ㅡ,.ㅡ
첫번째 문제는 오라클에서 가져와서 뿌려주는부분이 ???로 보이는 문제입니다. 우선 JSP에서는
<%@ page contentType="text/html;papeEncoding=Shift_JIS"%><meta http-equiv="Content-Type" content="text/html;papeEncoding=Shift_JIS">
위와 같이 세팅을 했습니다. charset=euc-jp,charset=shift_jis 등등 이쪽에서는 별별 세팅을 해보았지만.오라클 뿌려주는부분은 여전히???나오고요. JSP에서 텍스트부분은 일어로 잘보입니다.
여기저기 찾아보니 오라클 charset이 UTF-8 인가 이렇게 해야 된다고하는거 같던데요.
그리고
select * from v$nls_parametersWHERE PARAMETER='NLS_CHARACTERSET'
위와같은 쿼리실행시 UTF-8이 보여야한다고 하던데.
이쪽서버에서는 KO16KSC5601 이게 보이네요. /etc/profile 에
NLS_LANG=JAPANESE_JAPAN.JA16EUC 이렇게 되있어서 일본어로 설치된지 알았는데 위의 결과로 봤을때는 한글로 설치한거 같은데. 지금 오라클은 어떤 언어로 설치가 됬나요?
그리고 만약 한글로 설치됬다면 다시 설치안하고 UTF-8 로 세팅이가능한지요?
두번째문제는 java 에서 메세지를 뿌려주는 부분인데, 이부분역시 ???로 나옵니다.
japan = new String(korean.getBytes("8859_1"), "Shift-JIS");
그리고 위와같이 변경을 했는데.
Error: 500Location: /servlet/PageMgrInternal Servlet Error:java.lang.NullPointerException
at java.lang.ClassLoader.resolveClass0(Native Method)
at java.lang.ClassLoader.resolveClass(ClassLoader.java:641)
at org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(AdaptiveClassLoader.java:430)
at org.apache.tomcat.loader.AdaptiveServletLoader.loadClass(AdaptiveServletLoader.java:174)
at org.apache.tomcat.core.ServletWrapper.loadServlet(ServletWrapper.java:265)
at org.apache.tomcat.core.ServletWrapper.init(ServletWrapper.java:289)
at org.apache.tomcat.core.Handler.service(Handler.java:254)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:806)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:752)
at org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java:166)
at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
at java.lang.Thread.run(Thread.java:536)
이런메세지가 떨어집니다. 제가 볼때는 OS에서 일본어가 설치가 안된거 같은데. 그쪽에서는 설치했다고 하고.
아주 미치겠네요. 몇주째 매달려 있습니다. 고수님들 조언좀 부탁드립니다.
자주 들어와 보겠지만. sdtool@neo-idea.co.kr 메일로 남겨주시면 감사하겠습니다.
일본어의 사용은 DB설치시에 선택하는 사항입니다..그리고 님이 이야기
일본어의 사용은 DB설치시에 선택하는 사항입니다..
그리고 님이 이야기 한 대로 select * from v$nls_parametersWHERE PARAMETER='NLS_CHARACTERSET' 이문장을 수행 하면
결과가 "JA16SJIS"가 나와야 합니다.
변경절차...
1. shutdown
2. startuo mount exclusive
3. alter system enable restricted session
4. alter system set job_queue_processes = 0
5. alter database open
6. alter database character set ja16sjis
or (alter database character set internal_use ja16sjis)
7. alter database national character set ja16sjis
or (alter database national character set internal_use ja16sjis)
8. select * from nls_database_parameters where parameter like '%CHARACTERSET%' 확인.
9.shutdown immediate
10. csh
# DB 환경변수
setenv NLS_LANG japanese_Japtan.JA16SJIS
# shell 환경변수
setenv LANG ja_JP.PCK
setenv LC_ALL ja_JP.PCK
..................
저도 이놈 땜에 고생 했던 기억이 떠올라 몇자 적었습니다..
참고로 일본은 우리처럼 단일문자셋이 아닙니다. 회사마다 다른경우들이많이 존재합니다. 그리고 위의 'OS 변수중 EUC'를 쓰고 싶다면 그렇게 하세요.
그럼 나중에 고생이 될 겁니다. 저도 일본에 직접 가서 PCK로 바꾸어서
사용할 수 밖에 없었습니다.
댓글 달기