- (when (= (length char-rep) 1)
- (aref char-rep 0))
- ))))
-
-(defun www-uri-encode-char (char)
- (if (encode-char char '=ucs)
- (mapconcat
- (lambda (byte)
- (format "%%%02X" byte))
- (encode-coding-string (char-to-string char) 'utf-8-mcs-er)
- "")
- (let ((ccs-list '(; =ucs
- =cns11643-1 =cns11643-2 =cns11643-3
- =cns11643-4 =cns11643-5 =cns11643-6 =cns11643-7
- =gb2312 =gb12345
- =jis-x0208 =jis-x0208@1990
- =jis-x0212
- =cbeta =jef-china3
- =jis-x0213-1@2000 =jis-x0213-1@2004
- =jis-x0208@1983 =jis-x0208@1978
- =zinbun-oracle =>zinbun-oracle
- =daikanwa
- =gt =gt-k
- =>>jis-x0208 =>>jis-x0213-1
- =>jis-x0208 =>jis-x0213-1
- =>>gt
- =ruimoku-v6
- =big5
- =big5-cdp))
- ccs ret)
- (while (and ccs-list
- (setq ccs (pop ccs-list))
- (not (setq ret (encode-char char ccs 'defined-only)))))
- (cond (ret
- (format "%s:0x%X"
- (www-uri-encode-feature-name ccs)
- ret))
- ((and (setq ccs (car (split-char char)))
- (setq ret (encode-char char ccs)))
- (format "%s:0x%X"
- (www-uri-encode-feature-name ccs)
- ret))
- (t
- (format "system-char-id:0x%X"
- (encode-char char 'system-char-id))
- )))))
+ (cond
+ ((eq genre 'character)
+ (when (= (length char-rep) 1)
+ (aref char-rep 0))
+ )
+ ((eq genre 'feature)
+ (concord-decode-object
+ '=id (www-uri-decode-feature-name char-rep) 'feature)
+ )
+ (t
+ (concord-decode-object
+ '=id (car (read-from-string char-rep)) genre)
+ ))))))
+
+(defun www-uri-encode-object (object)
+ (if (characterp object)
+ (if (encode-char object '=ucs)
+ (mapconcat
+ (lambda (byte)
+ (format "%%%02X" byte))
+ (encode-coding-string (char-to-string object) 'utf-8-mcs-er)
+ "")
+ (let ((ccs-list '(; =ucs
+ =cns11643-1 =cns11643-2 =cns11643-3
+ =cns11643-4 =cns11643-5 =cns11643-6 =cns11643-7
+ =gb2312 =gb12345
+ =jis-x0208 =jis-x0208@1990
+ =jis-x0212
+ =cbeta =jef-china3
+ =jis-x0213-1@2000 =jis-x0213-1@2004
+ =jis-x0208@1983 =jis-x0208@1978
+ =zinbun-oracle =>zinbun-oracle
+ =daikanwa
+ =gt =gt-k
+ =>>jis-x0208 =>>jis-x0213-1
+ =>jis-x0208 =>jis-x0213-1
+ =>>gt
+ =ruimoku-v6
+ =big5
+ =big5-cdp))
+ ccs ret)
+ (while (and ccs-list
+ (setq ccs (pop ccs-list))
+ (not (setq ret (encode-char object ccs 'defined-only)))))
+ (cond (ret
+ (format "%s:0x%X"
+ (www-uri-encode-feature-name ccs)
+ ret))
+ ((and (setq ccs (car (split-char object)))
+ (setq ret (encode-char object ccs)))
+ (format "%s:0x%X"
+ (www-uri-encode-feature-name ccs)
+ ret))
+ (t
+ (format "system-char-id:0x%X"
+ (encode-char object 'system-char-id))
+ ))))
+ (format "rep.id:%s" (concord-object-id object))))
+
+(defun est-format-object (object)
+ (if (characterp object)
+ (char-to-string object)
+ (format "%s" (concord-object-id object))))