-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature]: latin1
인코딩의 옛한글을 핸들링할 수 있는 기능이 있으면 좋을 것 같습니다.
#252
Comments
괜찮다면 저를 담당자로 지정해주셔서 제가 이 기능을 개발해봐도 될까요? @okinawaa |
@hsh2001 네 너무 좋아요! |
생각해보니 옛한글에서는 존재했지만 이제는 사라진 많은 자음과 모음이 조합된 글자는 현대 한글로 변환할 수가 없네요.. 또, 옛한글을 현대한글로 변환할 수 있는 사례(예를 들면 아래아를 ㅏ로 변환)가 몇몇 있다보니 조사가 방대하게 필요할 것 같습니다... 일단은 다음과 같은 인터페이스를 제안드릴 수 있을 것 같아요! (네이밍은 일단 보류..) // 입력으로 받은 문제열에 옛한글이 포함되어 있는가?
include옛한글(str: string): boolean;
// 옛한글이 포함된 문자열이라면, 포함된 모든 문자열이 현대한글로 변환될 수 있는가?
canBeReplace엣한글to현대한글(str: string): boolean;
// 대체할 수 없는 옛한글을 현대 한글로 변환하려 할 때 내는 에러
class Irreplaceable옛한글Error extends Error;
// 옛한글을 현대한글로 변환
// @throws Irreplaceable옛한글Error
replace옛한글to현대한글(str: string): string; (사실 요즘 옛한글을 실질적으로 사용하는 사례는 적고, 말씀드린 파일 이름과 같은 예시가 대부분이긴 합니다..) |
@okinawaa 제가 조금 조사를 해보았는데요! https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%EB%93%B1%EA%B0%80%EC%84%B1 https://www.unicode.org/charts/PDF/U1100.pdf 이슈에서 말한 파일이름이 바뀌는 현상은 OS에서 한글을 저장할 때 NFD로 저장되어 있냐 NFC로 저장되어 있냐가 문제인 것 같습니다. /**
* str 에 NFD(조합형) 한글이 포함되어 있는가?
*/
function includeNFDHangul(str: string): boolean;
/**
* str 에 현대에는 사용하지 않는 한글이 포함되어 있는가?
*/
function includeOldHangul(str: string): boolean;
class IrreplaceableOldHangulError extends Error;
/**
* NFD 한글을 NFC 한글로 변환한다.
*
* @throws {IrreplaceableOldHangulError} 현대에는 사용하지 않는 한글이 포함되어 있는 경우.
*/
export function replaceNFDHangulToNFCHangul(str: string): string 이렇게 변경할 수 있을 것 같습니다! 간단하게 코드도 작성해봤는데, 인터페이스가 괜찮은 것 같다고 생각하신다면 레포지토리 포크 따서 PR 작성해보겠습니다 :) |
네이밍 컨벤션에 굳이 필요한 경우가 아니라면 Hangul 을 이름에 포함하지 않는다고 하였지만, NFD와 NFC는 한글만을 위한 기술이 아니기 때문에, "NFD로 정규화되어 있으면서 한글인 문자열을 다룬다"가 중요한 포인트 같아서 포함되는 편이 좋을 것 같아요! |
만약 이 인터페이스가 괜찮으시다면, 문서화할 때 |
@hsh2001 님 안녕하세요! 좋은 작업 해주셔서 정말 감사드립니다! |
@po4tion 안녕하세요! 좋은 제안 감사합니다. 링크해주신 PR에서의 논의는 대체할 수 있는 대상이 있어서 에러를 내는 대신 다른 값으로 대체하여 응답한다는 결정이 가능한 것 같아요! 다만 이 함수는 NFC로 정규화된 옛한글이 존재하지 않기 때문에 대체할 수 있는 대상이 없습니다. 대신 기존의 NFD 정규화로 되어 있던 옛한글 부분은 그대로 유지하고, 대체 가능한 부분만 바꿔서 반환하는 것도 방법일 것 같습니다. 하나 더 고민되는 부분이, NFD 정규화 된 문자열은 추가로 해당 논의 자체가 결론을 짓기 전에 결론적으로 다음과 같은 선택지가 있을 것 같습니다!
function replaceNFDHangulToNFCHangul(str: string, options?: {
oldHangulMapper?: (char: string) => string;
}): string; |
Description
NestJS를 통해 파일을 업로드하는 기능을 제작중에 있는데, 파일의 이름이
latin1
로 인코딩 되는 많은 OS 에서는 옛한글로 저장되기에 자소분리가 되는 경우가 잦습니다. 맥의 파일을 윈도우로 전달했더니 자소가 분리되는 경험을 하신 분들이 많은 것으로 알고 있는데, 옛한글 인코딩으로 저장된 한글을 현대 UTF8 인코딩으로 잘 해석하는 기능이 있으면 좋을 것 같아요.https://ko.wikipedia.org/wiki/%EC%98%9B%ED%95%9C%EA%B8%80
Possible Solution
No response
etc.
No response
The text was updated successfully, but these errors were encountered: