{"action":"opened","number":51,"pull_request":{"url":"https://api.github.com/repos/marc4j/marc4j/pulls/51","id":62007262,"html_url":"https://github.com/marc4j/marc4j/pull/51","diff_url":"https://github.com/marc4j/marc4j/pull/51.diff","patch_url":"https://github.com/marc4j/marc4j/pull/51.patch","issue_url":"https://api.github.com/repos/marc4j/marc4j/issues/51","number":51,"state":"open","locked":false,"title":"Improved conversion between Unicode/ISO-5426.","user":{"login":"zman0900","id":428589,"avatar_url":"https://avatars.githubusercontent.com/u/428589?v=3","gravatar_id":"","url":"https://api.github.com/users/zman0900","html_url":"https://github.com/zman0900","followers_url":"https://api.github.com/users/zman0900/followers","following_url":"https://api.github.com/users/zman0900/following{/other_user}","gists_url":"https://api.github.com/users/zman0900/gists{/gist_id}","starred_url":"https://api.github.com/users/zman0900/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zman0900/subscriptions","organizations_url":"https://api.github.com/users/zman0900/orgs","repos_url":"https://api.github.com/users/zman0900/repos","events_url":"https://api.github.com/users/zman0900/events{/privacy}","received_events_url":"https://api.github.com/users/zman0900/received_events","type":"User","site_admin":false},"body":"I recently made this pull request to ksclarke/freelib-marc4j.  This is the same thing here but with modified formatting to merge cleanly.\r\n\r\n----\r\n\r\nBased on http://www.unicode.org/L2/L2000/00220-map-5426.pdf there were\r\nsome characters missing and some incorrect for the conversion to/from\r\nUnicode to/from ISO-5426.  Old source link in code is dead.\r\n\r\nIn ISO-5426, characters in the range 0xC0-0xDF are used as combining\r\ncharacters to apply diacritics to the characters that _follow_ them. The\r\nexisting code handles these by outputting the normalized,\r\nsingle-character versions when converting to unicode, and only\r\nsupporting normalized unicode input when converting from unicode.\r\nThis means that data input to UnicodeToIso5426 needs to be normalized to\r\nget the correct result, so that was added.\r\n\r\nCharacters 0xC8 and 0xC9 (4/8, 4/9) map to the same unicode character,\r\nu+0308 \"combining diaeresis\". When converting to ISO-5426, current code\r\nalways uses the 0xC8 vairent when converting the normalized version of\r\n<some-char> + u+0308.  The reverse conversion back to unicode had no\r\nsupport for 0xC9 characters even though this is legal. Now 0xC9\r\npreceding a character will produce the same unicode character as 0xC8\r\npreceding a character would.\r\n\r\nMappings for ISO-5426 characters 0xF2 and 0xF3 (7/2, 7/3) were missing\r\nin both directions.\r\n\r\nMappings for ISO-5426 characters 0xA2, 0xAA, 0xB0, 0xB1, and 0xB2 (2/2,\r\n2/10, 3/0, 3/1, 3/2) were either wrong or missing in one direction.","created_at":"2016-03-08T00:49:30Z","updated_at":"2016-03-08T00:49:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"dbcbc9fee817f55c6731c1b7a9b7183a5113ac2b","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/marc4j/marc4j/pulls/51/commits","review_comments_url":"https://api.github.com/repos/marc4j/marc4j/pulls/51/comments","review_comment_url":"https://api.github.com/repos/marc4j/marc4j/pulls/comments{/number}","comments_url":"https://api.github.com/repos/marc4j/marc4j/issues/51/comments","statuses_url":"https://api.github.com/repos/marc4j/marc4j/statuses/4b1bff56a42dffc66f79c971b85e565fcc4e6aff","head":{"label":"zman0900:marc4j-upstream-iso-5426","ref":"marc4j-upstream-iso-5426","sha":"4b1bff56a42dffc66f79c971b85e565fcc4e6aff","user":{"login":"zman0900","id":428589,"avatar_url":"https://avatars.githubusercontent.com/u/428589?v=3","gravatar_id":"","url":"https://api.github.com/users/zman0900","html_url":"https://github.com/zman0900","followers_url":"https://api.github.com/users/zman0900/followers","following_url":"https://api.github.com/users/zman0900/following{/other_user}","gists_url":"https://api.github.com/users/zman0900/gists{/gist_id}","starred_url":"https://api.github.com/users/zman0900/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zman0900/subscriptions","organizations_url":"https://api.github.com/users/zman0900/orgs","repos_url":"https://api.github.com/users/zman0900/repos","events_url":"https://api.github.com/users/zman0900/events{/privacy}","received_events_url":"https://api.github.com/users/zman0900/received_events","type":"User","site_admin":false},"repo":{"id":53222169,"name":"freelib-marc4j","full_name":"zman0900/freelib-marc4j","owner":{"login":"zman0900","id":428589,"avatar_url":"https://avatars.githubusercontent.com/u/428589?v=3","gravatar_id":"","url":"https://api.github.com/users/zman0900","html_url":"https://github.com/zman0900","followers_url":"https://api.github.com/users/zman0900/followers","following_url":"https://api.github.com/users/zman0900/following{/other_user}","gists_url":"https://api.github.com/users/zman0900/gists{/gist_id}","starred_url":"https://api.github.com/users/zman0900/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zman0900/subscriptions","organizations_url":"https://api.github.com/users/zman0900/orgs","repos_url":"https://api.github.com/users/zman0900/repos","events_url":"https://api.github.com/users/zman0900/events{/privacy}","received_events_url":"https://api.github.com/users/zman0900/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/zman0900/freelib-marc4j","description":"A fork of the MARC4J project","fork":true,"url":"https://api.github.com/repos/zman0900/freelib-marc4j","forks_url":"https://api.github.com/repos/zman0900/freelib-marc4j/forks","keys_url":"https://api.github.com/repos/zman0900/freelib-marc4j/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zman0900/freelib-marc4j/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zman0900/freelib-marc4j/teams","hooks_url":"https://api.github.com/repos/zman0900/freelib-marc4j/hooks","issue_events_url":"https://api.github.com/repos/zman0900/freelib-marc4j/issues/events{/number}","events_url":"https://api.github.com/repos/zman0900/freelib-marc4j/events","assignees_url":"https://api.github.com/repos/zman0900/freelib-marc4j/assignees{/user}","branches_url":"https://api.github.com/repos/zman0900/freelib-marc4j/branches{/branch}","tags_url":"https://api.github.com/repos/zman0900/freelib-marc4j/tags","blobs_url":"https://api.github.com/repos/zman0900/freelib-marc4j/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zman0900/freelib-marc4j/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zman0900/freelib-marc4j/git/refs{/sha}","trees_url":"https://api.github.com/repos/zman0900/freelib-marc4j/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zman0900/freelib-marc4j/statuses/{sha}","languages_url":"https://api.github.com/repos/zman0900/freelib-marc4j/languages","stargazers_url":"https://api.github.com/repos/zman0900/freelib-marc4j/stargazers","contributors_url":"https://api.github.com/repos/zman0900/freelib-marc4j/contributors","subscribers_url":"https://api.github.com/repos/zman0900/freelib-marc4j/subscribers","subscription_url":"https://api.github.com/repos/zman0900/freelib-marc4j/subscription","commits_url":"https://api.github.com/repos/zman0900/freelib-marc4j/commits{/sha}","git_commits_url":"https://api.github.com/repos/zman0900/freelib-marc4j/git/commits{/sha}","comments_url":"https://api.github.com/repos/zman0900/freelib-marc4j/comments{/number}","issue_comment_url":"https://api.github.com/repos/zman0900/freelib-marc4j/issues/comments{/number}","contents_url":"https://api.github.com/repos/zman0900/freelib-marc4j/contents/{+path}","compare_url":"https://api.github.com/repos/zman0900/freelib-marc4j/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zman0900/freelib-marc4j/merges","archive_url":"https://api.github.com/repos/zman0900/freelib-marc4j/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zman0900/freelib-marc4j/downloads","issues_url":"https://api.github.com/repos/zman0900/freelib-marc4j/issues{/number}","pulls_url":"https://api.github.com/repos/zman0900/freelib-marc4j/pulls{/number}","milestones_url":"https://api.github.com/repos/zman0900/freelib-marc4j/milestones{/number}","notifications_url":"https://api.github.com/repos/zman0900/freelib-marc4j/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zman0900/freelib-marc4j/labels{/name}","releases_url":"https://api.github.com/repos/zman0900/freelib-marc4j/releases{/id}","deployments_url":"https://api.github.com/repos/zman0900/freelib-marc4j/deployments","created_at":"2016-03-05T20:38:29Z","updated_at":"2016-03-05T20:38:30Z","pushed_at":"2016-03-08T00:44:54Z","git_url":"git://github.com/zman0900/freelib-marc4j.git","ssh_url":"git@github.com:zman0900/freelib-marc4j.git","clone_url":"https://github.com/zman0900/freelib-marc4j.git","svn_url":"https://github.com/zman0900/freelib-marc4j","homepage":"http://projects.freelibrary.info/freelib-marc4j/","size":10109,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"marc4j:master","ref":"master","sha":"e520da127fefefb2921ecf91b5287bdcf9e061c5","user":{"login":"marc4j","id":1321963,"avatar_url":"https://avatars.githubusercontent.com/u/1321963?v=3","gravatar_id":"","url":"https://api.github.com/users/marc4j","html_url":"https://github.com/marc4j","followers_url":"https://api.github.com/users/marc4j/followers","following_url":"https://api.github.com/users/marc4j/following{/other_user}","gists_url":"https://api.github.com/users/marc4j/gists{/gist_id}","starred_url":"https://api.github.com/users/marc4j/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marc4j/subscriptions","organizations_url":"https://api.github.com/users/marc4j/orgs","repos_url":"https://api.github.com/users/marc4j/repos","events_url":"https://api.github.com/users/marc4j/events{/privacy}","received_events_url":"https://api.github.com/users/marc4j/received_events","type":"Organization","site_admin":false},"repo":{"id":7822758,"name":"marc4j","full_name":"marc4j/marc4j","owner":{"login":"marc4j","id":1321963,"avatar_url":"https://avatars.githubusercontent.com/u/1321963?v=3","gravatar_id":"","url":"https://api.github.com/users/marc4j","html_url":"https://github.com/marc4j","followers_url":"https://api.github.com/users/marc4j/followers","following_url":"https://api.github.com/users/marc4j/following{/other_user}","gists_url":"https://api.github.com/users/marc4j/gists{/gist_id}","starred_url":"https://api.github.com/users/marc4j/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marc4j/subscriptions","organizations_url":"https://api.github.com/users/marc4j/orgs","repos_url":"https://api.github.com/users/marc4j/repos","events_url":"https://api.github.com/users/marc4j/events{/privacy}","received_events_url":"https://api.github.com/users/marc4j/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/marc4j/marc4j","description":"Git repository initially imported from the Tigris CVS repo as of 2013.01.25","fork":false,"url":"https://api.github.com/repos/marc4j/marc4j","forks_url":"https://api.github.com/repos/marc4j/marc4j/forks","keys_url":"https://api.github.com/repos/marc4j/marc4j/keys{/key_id}","collaborators_url":"https://api.github.com/repos/marc4j/marc4j/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/marc4j/marc4j/teams","hooks_url":"https://api.github.com/repos/marc4j/marc4j/hooks","issue_events_url":"https://api.github.com/repos/marc4j/marc4j/issues/events{/number}","events_url":"https://api.github.com/repos/marc4j/marc4j/events","assignees_url":"https://api.github.com/repos/marc4j/marc4j/assignees{/user}","branches_url":"https://api.github.com/repos/marc4j/marc4j/branches{/branch}","tags_url":"https://api.github.com/repos/marc4j/marc4j/tags","blobs_url":"https://api.github.com/repos/marc4j/marc4j/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/marc4j/marc4j/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/marc4j/marc4j/git/refs{/sha}","trees_url":"https://api.github.com/repos/marc4j/marc4j/git/trees{/sha}","statuses_url":"https://api.github.com/repos/marc4j/marc4j/statuses/{sha}","languages_url":"https://api.github.com/repos/marc4j/marc4j/languages","stargazers_url":"https://api.github.com/repos/marc4j/marc4j/stargazers","contributors_url":"https://api.github.com/repos/marc4j/marc4j/contributors","subscribers_url":"https://api.github.com/repos/marc4j/marc4j/subscribers","subscription_url":"https://api.github.com/repos/marc4j/marc4j/subscription","commits_url":"https://api.github.com/repos/marc4j/marc4j/commits{/sha}","git_commits_url":"https://api.github.com/repos/marc4j/marc4j/git/commits{/sha}","comments_url":"https://api.github.com/repos/marc4j/marc4j/comments{/number}","issue_comment_url":"https://api.github.com/repos/marc4j/marc4j/issues/comments{/number}","contents_url":"https://api.github.com/repos/marc4j/marc4j/contents/{+path}","compare_url":"https://api.github.com/repos/marc4j/marc4j/compare/{base}...{head}","merges_url":"https://api.github.com/repos/marc4j/marc4j/merges","archive_url":"https://api.github.com/repos/marc4j/marc4j/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/marc4j/marc4j/downloads","issues_url":"https://api.github.com/repos/marc4j/marc4j/issues{/number}","pulls_url":"https://api.github.com/repos/marc4j/marc4j/pulls{/number}","milestones_url":"https://api.github.com/repos/marc4j/marc4j/milestones{/number}","notifications_url":"https://api.github.com/repos/marc4j/marc4j/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/marc4j/marc4j/labels{/name}","releases_url":"https://api.github.com/repos/marc4j/marc4j/releases{/id}","deployments_url":"https://api.github.com/repos/marc4j/marc4j/deployments","created_at":"2013-01-25T15:33:21Z","updated_at":"2016-01-21T17:24:26Z","pushed_at":"2016-03-08T00:49:30Z","git_url":"git://github.com/marc4j/marc4j.git","ssh_url":"git@github.com:marc4j/marc4j.git","clone_url":"https://github.com/marc4j/marc4j.git","svn_url":"https://github.com/marc4j/marc4j","homepage":"","size":9321,"stargazers_count":32,"watchers_count":32,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":29,"mirror_url":null,"open_issues_count":22,"forks":29,"open_issues":22,"watchers":32,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/marc4j/marc4j/pulls/51"},"html":{"href":"https://github.com/marc4j/marc4j/pull/51"},"issue":{"href":"https://api.github.com/repos/marc4j/marc4j/issues/51"},"comments":{"href":"https://api.github.com/repos/marc4j/marc4j/issues/51/comments"},"review_comments":{"href":"https://api.github.com/repos/marc4j/marc4j/pulls/51/comments"},"review_comment":{"href":"https://api.github.com/repos/marc4j/marc4j/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/marc4j/marc4j/pulls/51/commits"},"statuses":{"href":"https://api.github.com/repos/marc4j/marc4j/statuses/4b1bff56a42dffc66f79c971b85e565fcc4e6aff"}},"merged":false,"mergeable":true,"mergeable_state":"clean","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":70,"deletions":15,"changed_files":2}}