Tag: utf-8

  • Spring and Logback

    IoC, or DI definitely takes a perspective turnaround inside your head, but you get around it slowly.  I was playing around ways to integrate LogBack, and Spring – essentially around having Spring give me a pre-created instance of LogBack logger.

    I searched around posts, but most people seem to be against using Spring just for substituting one-line of Logback (Logger log = LoggerFactory.getLogger("LogbackTest");) to get your logger.

    I, on the other hand, was more interested in how to get Spring give me a LogBack logger instance without too much contrived hand-written code to achieve so. And with a bit of reading through Spring principles, documentation I found the way.

    Essentially, when using Logback’s LoggerFactory you have access to only a single getLogger() factory method. This is static which makes things a bit different for what Spring would call a bean – a class providing constructor, getter, setter methods. To circumvent this non-bean style, Spring provides what you call as static initializers a.k.a substitutes for constructors, which allow you to call a static method in lieu of calling a constructor on an object.

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
     "http://www.springframework.org/dtd/spring-beans.dtd">
    
    <beans>
     <bean id="bean1" class="org.slf4j.LoggerFactory" factory-method="getLogger">
     <constructor-arg value="LogbackTest" />
     </bean>
    </beans>

    Now, this bean1 can be used as a regular bean inside your class

    ApplicationContext ctx = new FileSystemXmlApplicationContext("logbacktest.xml");
     Logger log = (Logger) ctx.getBean("bean1");
    
     log.debug("This is my first message");
     log.info("How about this information message");

    Throw in a logback.xml in your classpath, and viola you have a nice Spring injected dependency – log in your code, while still using Logback!

  • PHP in UTF-8

    To setup PHP for UTF-8

    データベース、スクリプトを記述するファイルの文字エンコーディングはPHPの文字エンコーディングを使用する方が設定が行い易いです。

    default_charset=”UTF-8″

    ダイナミックコンテンツの文字コードセットは必ず指定しなければならない。(セキュリティ上の理由。詳細は 2000年2月のCERTのXSSアドバイザリを参照)

    magic_quotes_gpc=off

    マルチバイト文字エンコーディング環境のみでなく、セキュリティ上も有害であるので必ずoffに設定する。ポータブルなスクリプトの場合、この設定 がonである場合にstrip_slashes()を全ての入力に適用するコードをスクリプトの開始時に実行する。稀に magic_quote_gpc=onである事を前提としているアプリケーションもある。そのようなアプリケーションは使わない方が良い。

    mbstring.input_encoding=”pass”

    現在のブラウザでHTMLを記述した文字エンコーディング以外で文字を送信してくるようなブラウザはない。(携帯などモバイル環境を除く)

    mbstring.internal_encoding=”UTF-8″

    ブラウザから送信される文字エンコーディングはcharsetと同じはず。プログラム側では必ず送信された文字 エンコーディングが正当なUTF-8エンコーディングであるか確認する事。

    mbstring.output_encoding=”pass”

    出力はinternal_encodingで行われる。つまりUTF-8。(携帯などモバイル環境を除く)

    mbstring.language=”japanese”

    言語環境を日本語に設定。mb_send_mail関数などの動作に影響する。

    mbstring.substitute_charactor=””

    入力に変換出来ない文字エンコーディングを含む場合、アプリケーションの実行を停止しなければならない。本来、セキュリティ上不正な文字を削除すべ きではないが、古いPHP(PHP 4.4.2, 5.1.2以下)では文字エンコーディングを確認する仕組みが無い。古いPHPで効率的に不正エンコーディングを検出するには文字列の長さの変化で確認す る。*1

    PHP 5.1.3, 4.3.3以降はmb_check_encoding関数を利用してスクリプトを実行の初期段階で不正エンコーディングを検出することが望ましい。

  • Set MySQL to UTF-8

    Change the following in my.cnf
    
    [mysqld]
    default-character-set= utf8
    skip-character-set-client-handshake
    character-set-server= utf8
    collation-server= utf8_general_ci
    init-connect= 'SET NAMES utf8'

    via M’sNOTE  MySQL(デフォルト文字コード)の設定 – Ubuntu9.04.

  • MySQL UTF-8

    A very informative page (in Japanese) about MySQL and issues to enable correct UTF-8 data handling with client applications.

    View original post