이전 포스트의 계획과 같이 이번 포스트에서는 ISBN을 체킹하는 함수를 구현하여 보겠습니다.
ISBN에 대한 정보는 국립중앙도서관 문헌번호센터에서 확인하실 수 있습니다.
ISBN 소개 [국립중앙도서관 문헌번호센터]
위의 링크를 확인해 보시면 ISBN에 대해서 정확한 정보를 확인하실 수 있을 것입니다. 제가 이번 포스팅에서 구현하고자하는 코드는 ISBN이 2007년도 부터 13자리로 변경되었기 때문에 기존의 10자리 ISBN번호와 매칭하기 위함임을 알려드립니다. 현재까지는 978을 ISBN의 번호 앞에 사용하여 왔기에 10자리를 그대로 사용하였으나 ISBN 번호가 모자라나 봅니다. 곧 979를 사용할 수도 있음을 알아 내었습니다.이와 같은 이유로 2007년 1월 부터 13자리 ISBN번호를 사용하는 것 같습니다. 이는 곧 10자리와 13자리의 ISBN번호를 이제는 서로 변경할 수 없다는 뜻이 되겠지요 ^^ 하지만 기존의 발행자 번호는 978이기에 이전 포스트에서 네이버와 알라딘이 서로 다른 ISBN을 보여준 경우를 예로 들어 알라딘의 ISBN번호를 978로 변경하는 함수를 추가해 보겠습니다.
출판사가 10자리 ISBN을 여전히 상당수 확보하고 있는데, 왜 ISBN 10자리를 ISBN 13자리로 바꾸어야 하는가? 국제 ISBN 표준이 변하고 있으며, ISBN의 배정은 국제적인 기준에 따라 조직된 것입니다. ISBN 13자리로 변경하는 이유는 전세계의 일부 국가에서 기존의 번호를 사용할 수 있는 여유분이 점차 줄어들고 있기 때문입니다. 따라서 이 시스템을 유지하기 위해서는 979라는 접두부를 추가로 채택함으로써 번호의 이용가능성을 확장한 것입니다. 출판사가 978에서 사용했던 것과 같이 새로운 979에서도 동일한 발행자번호를 사용할 수 있는가? 아닙니다. 예를 들어 발행자번호가 “7383”이라면 앞으로는 978-89-7383으로 사용하며, 979-89-7383은 추후 센터에서 다른 발행자(출판사)에 배정할 예정이므로, 979번호는 발행자(출판사)에서 임의로 사용하시면 안됩니다. 현재 배정받은 발행자번호는 모두 978입니다.
-출처 : 국립중앙도서관 문헌번호센터-
인터넷 쇼핑몰이라던가 ISBN을 보여주는 도서검색 서비스에서는 부가기호를 보여주지 않기 때문에 저또한 부가기호에 관한 것은 제외하고 글을 이어가도록 하겠습니다.
(도서검색서비스에서 부가기호도 같이 보여주었으면 하는 작은 바램을 가지고 있습니다. 이유인 즉슨 부가기호가 있으면 해당 책이 어느 분류에 속하는지 쉽게 알아볼 수 있을 것 같아서지요 ^^)
검색싸이트에서의 검색으로 ISBN 10자리와 13자리의 경우 check digit하는 방법이 틀리다는 것을 알아냈지만 신뢰할 수 있는 원본문서는 찾지 못하였습니다. 검색능력의 부재로 -_-;;
하지만 ISBN-10 의 경우 Modulo 11 알고리즘을 이용하여 계산한다는 것을 알아내었고 ISBN-13의 경우 Modulo 10 알고리즘을 사용하여 계산한다는 것을 찾아 내었습니다. 이 싸이트도 100% 신뢰할 수 있는 것은 아닙니다만, 한도 끝도 없는 검색을 하여야 하는지라 맞다고 생각하고 만들어 보도록 하겠습니다. (바코드 팔아먹는 회사인거 같은데 설마 틀릴리가;;)
참고 :
ISBN-10 Modulo 11 계산법 : http://www.activebarcode.com/codes/checkdigit/modulo11.html
ISBN-13 Modulo 10 계산법 : http://www.activebarcode.com/codes/checkdigit/modulo10.html
- btnCheck_Click - check 버튼 클릭 이벤트 메소드
- checkISBN13 - ISBN13 체크 메소드
- checkISBN10 - ISBN10 체크 메소드
- ISBN10toISBN13 - ISBN10 -> ISBN13으로 변경하는 메소드
- getModulo10 - Modulo10 알고리즘 check digit 리턴 메소드
- getModulo11 - Modulo11 알고리즘 check digit 리턴 메소드
실행결과를 보시면 아시겠지만 ISBN 10자리 숫자를 넣을 경우에는 아래 New ISBN이라고 해서 새로운 ISBN번호를 보여주게 만들었습니다. 참고하시기 바랍니다.
ISBNCheck - [실행하기] [소스받기]
p.s. 개인 서버라 서버가 느릴 수 있습니다. 양해바랍니다. ^^
ISBN.zip