# Ruby M17N $B2q5D$N5D;vO?(B

**URL:** <https://www.ruby-forum.com/t/ruby-m17n-b2q5d-n5d-vo-b/129352>\
**Category:** Development\
**Created:** [February 17, 2008, 10:03am UTC](https://www.ruby-forum.com/t/ruby-m17n-b2q5d-n5d-vo-b/129352 "2008-02-17T10:03:37Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [February 17, 2008, 10:03am UTC](https://www.ruby-forum.com/t/ruby-m17n-b2q5d-n5d-vo-b/129352/1 "2008-02-17T10:03:37Z")

</div>

e$B@.@%$G$9!#e(B

Ruby M17N  
e$B2q5D$re(B2008e$BG/e(B2e$B7ne(B15e$BF|$K9T$C$?$N$G$9$,!"$=$N%m%0$rE\>:$7$F$\*$-$^$9!#e(B

== cgi.rb e$B8e7Q$N8xJg$K$D$$$Fe(B

e$B\>r7o$O0J2\<$NDL$je(B

- e$BL\>A0e(B e$B$Oe(B cgi.rb e$B0J30$G$"$k$3$He(B
- MVCe$B$NJ,N%$r9T$C$F$$$k$3$He(B

== String#gsub(regexp, hash)

String#gsub(regexp, {“ä”=\>"\u00C4", …}) e$B$H$$$&I=5-$r9T$$$?$$e(B  
e$B"\*:NMQe(B

== replicae$B$N=PE5Ey$N\>pJs$re(B

e$B"\*=q$/e(B

== CP949e$B$He(BGBKe$B$N0c$$e(B

e$B"\*e(BCP949e$B$OJ,N%e(B

== e$B6uJ8;ze(B e$B$He(B UTF-16 e$B$r7k9g$9$k\>l9g$K$D$$$Fe(B

e$B6uJ8;z$Oe(B ASCII Compatible  
e$B$G$J$$J8;zNs$H$b7k9g2DG=$K$7$F$O$I$&$+e(B  
e$B"\*:NMQe(B

== String#lengthe$B$de(BString#ate$B$,CY$$e(B

search\_nonasciie$B$r;H$C$F9bB.2=e(B  
VALIDe$B$Je(BUTF-8e$B$N\>l9g$O$5$i$K9bB.2=e(B

== String#getbyte, String#setbyte

e$B"\*:NMQe(B

== Indexer

e$B"\*J]N1e(B

== inspect e$B$K$D$$$Fe(B

e$B0J2\<$NJ}8~$G8!F$e(B

- obj.inspect\_acumulate(enc) e$B$r?7@\_e(B

== strftime e$B$NJ}8~@-$K$D$$$Fe(B  
strftime e$B$Oe(B locale  
e$BHs0MB8!"0MB8$N$b$N$,I,MW$=$&$J$i$PJL$KDI2C$9$ke(B

== require\_relative e$B$NF3F~$K$D$$$Fe(B  
require\_relative e$B$r8F$s$@%U%!%$%k$+$i$NAjBP%Q%9$Ge(B require  
e$B$9$k!#e(B  
e$B"\*:NMQe(B

== IO.copy\_stream  
IO.copy\_stream(filename, filename) e$B$de(B IO.copy\_stream(stream,  
stream) e$BEy$G!"e(B  
e$B%U%!%$%k$d%9%H%j!\<%`$r%3%T!<$9$k!#e(B e$B$J$*!"%U%!%$%kL>$rM?$($i$l$?>l9g$O%7%9%F%`%3!\<%k$r8F$V$?$a!“e(B  
Rubye$B$OJL$N$3$H$r$G$-$k!#e(B  
e$B”\*L\>A0$K$D$$$FMW8!F$e(B

== Hash#compare\_by\_identitye$B$,HyL/$J7oe(B  
Hash#compared\_by(:equal?, :obj\_id)e$B$KJQ99$7$?$$e(B  
e$B"\*:NMQe(B  
e$B"\*e(BHash#identifed\_bye$B$NJ}$,$$$$$+$be(B[ruby-dev:33817]

== Unicode Normalization

APIe$B$O0J2\<$"$?$j!#e(B

- String#encode(“utf-8 nfc”)
- String#normalize(“nfc”)
- Encoding::UTF\_8.nfc(str)

open(fn, “r:utf-8”, …)  
e$B$"$?$j$G!"@55,2=$7$J$,$iFI$\_9~$`Ey$N=hM}$r$7$?e(B  
e$B$$$N$G!"e(B  
e$B$=$l8~$1$N5-K!$b8!F$e(B

---

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [February 17, 2008, 12:12pm UTC](https://www.ruby-forum.com/t/ruby-m17n-b2q5d-n5d-vo-b/129352/2 "2008-02-17T12:12:16Z")

</div>

e$B@\>;3OB9-$G$9!#e(B

At Sun, 17 Feb 2008 18:00:54 +0900,  
NARUSE, Yui wrote:

> == String#gsub(regexp, hash)
> 
> String#gsub(regexp, {“ä”=\>"\u00C4", …}) e$B$H$$$&I=5-$r9T$$$?$$e(B  
> e$B"\*:NMQe(B

CGI::escapeHTML e$B$G$3$l$r;H$&$h$&$K$9$k$HNI$$$N$G$O$J$$$G$7$g$&$+e(B?

# Index: lib/cgi.rb

— lib/cgi.rb (revision 15522)  
+++ lib/cgi.rb (working copy)  
@@ -360,7 +360,7 @@

# CGI::escapeHTML('Usage: foo “bar” ')

# # =\> “Usage: foo “bar” \<baz\>”

def CGI::escapeHTML(string)

- string.gsub(/&/, ‘&’).gsub(/"/, ‘"’).gsub(/\>/,  
‘\>’).gsub(/\</, ‘\<’)

- string.gsub(/[&"\<\>]/, {’&’=\>’&’, ‘"’=\>’"’, ‘\<’=\>’\<’,  
‘\>’=\>’\>’})  
end

---

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [February 17, 2008, 12:23pm UTC](https://www.ruby-forum.com/t/ruby-m17n-b2q5d-n5d-vo-b/129352/3 "2008-02-17T12:23:26Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:33828] Re: Ruby M17N e$B2q5D$N5D;vO?e(B”  
on Sun, 17 Feb 2008 20:11:09 +0900, Kazuhiro NISHIYAMA  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|\> String#gsub(regexp, {“ä”=\>“\u00C4”, …}) e$B$H$$$&I=5-$r9T$$$?$$e(B  
|\> e$B"\*:NMQe(B  
|  
|CGI::escapeHTML e$B$G$3$l$r;H$&$h$&$K$9$k$HNI$$$N$G$O$J$$$G$7$g$&$+e(B?

e$B%3%\_%C%H$7$F$/$@$5$$!#e(B

---

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [February 17, 2008, 12:35pm UTC](https://www.ruby-forum.com/t/ruby-m17n-b2q5d-n5d-vo-b/129352/4 "2008-02-17T12:35:49Z")

</div>

e$B!!$5$5$@$G$9!%e(B

Yukihiro M. wrote:

> In message “Re: [ruby-dev:33828] Re: Ruby M17N e$B2q5D$N5D;vO?e(B”  
> on Sun, 17 Feb 2008 20:11:09 +0900, Kazuhiro NISHIYAMA [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:
> 
> |\> String#gsub(regexp, {“ä”=\>“\u00C4”, …}) e$B$H$$$&I=5-$r9T$$$?$$e(B  
> |\> e$B"\*:NMQe(B  
> |  
> |CGI::escapeHTML e$B$G$3$l$r;H$&$h$&$K$9$k$HNI$$$N$G$O$J$$$G$7$g$&$+e(B?
> 
> e$B%3%\_%C%H$7$F$/$@$5$$!#e(B

e$B!!e(Bhash e$B$O;vA0$K:n$C$F$\*$-$^$7$g$&$h!%e(B

---

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [February 18, 2008, 8:50am UTC](https://www.ruby-forum.com/t/ruby-m17n-b2q5d-n5d-vo-b/129352/5 "2008-02-18T08:50:50Z")

</div>

e$BLZB\<$G$9!#e(B

On Sun, 17 Feb 2008 18:00:54 +0900  
“NARUSE, Yui” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Ruby M17N e$B2q5D$re(B2008e$BG/e(B2e$B7ne(B15e$BF|$K9T$C$?$N$G$9$,!"$=$N%m%0$rE\>:$7$F$\*$-$^$9!#e(B

e$B$"$j$,$H$&$4$6$$$^$9!#e(B

> e$B6uJ8;z$Oe(B ASCII Compatible e$B$G$J$$J8;zNs$H$b7k9g2DG=$K$7$F$O$I$&$+e(B
> 
> strftime e$B$Oe(B locale e$BHs0MB8!“0MB8$N$b$N$,I,MW$=$&$J$i$PJL$KDI2C$9$ke(B  
> e$B”\*L\>A0$K$D$$$FMW8!F$e(B
> 
> - String#normalize(“nfc”)
> - Encoding::UTF\_8.nfc(str)
> 
> open(fn, “r:utf-8”, …) e$B$“$?$j$G!”@55,2=$7$J$,$iFI$\_9~$`Ey$N=hM}$r$7$?e(B  
> e$B$$$N$G!"e(B  
> e$B$=$l8~$1$N5-K!$b8!F$e(B

e$B$3$l$i$N8!F$%“%$%F%`$N\>pJs$r1Q8l$GN.$7$?$j$O$7$J$$$N$G$7$g$&$+e(B?  
#e$B$\*A0$,$d$l!”$H$$$&$3$H$J$iEXNO$7$^$9$,!#e(B

---

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [February 18, 2008, 9:35am UTC](https://www.ruby-forum.com/t/ruby-m17n-b2q5d-n5d-vo-b/129352/6 "2008-02-18T09:35:06Z")

</div>

e$B!V1Q8l$G$b!W$H8@$o$l$k$H!";22C\<T$N0l?M$H$7$F@UG$$re(B  
e$B46$8$5$;$i$l$F$7$^$$$^$7$?e(B ;-).

e$B$&$^$/9T$1$P:#F|$d$j$^$9!#e(B e$B59$7$/$\*4j$$$7$^$9!#e(B Martin.

At 16:49 08/02/18, KIMURA Koichi wrote:

> > == require\_relative e$B$NF3F~$K$D$$$Fe(B  
> > == Hash#compare\_by\_identitye$B$,HyL/$J7oe(B
> > 
> > open(fn, “r:utf-8”, …) e$B$“$?$j$G!”@55,2=$7$J$,$iFI$\_9~$`Ey$N=hM}$r$7$?e(B  
> > e$B$$$N$G!"e(B  
> > e$B$=$l8~$1$N5-K!$b8!F$e(B
> 
> e$B$3$l$i$N8!F$%“%$%F%`$N\>pJs$r1Q8l$GN.$7$?$j$O$7$J$$$N$G$7$g$&$+e(B?  
> #e$B$\*A0$,$d$l!”$H$$$&$3$H$J$iEXNO$7$^$9$,!#e(B
> 
> –  
> e$BLZB\<9@0le(B

#-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University  
#-#-# [http://www.sw.it.aoyama.ac.jp](http://www.sw.it.aoyama.ac.jp)[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [February 19, 2008, 4:50am UTC](https://www.ruby-forum.com/t/ruby-m17n-b2q5d-n5d-vo-b/129352/7 "2008-02-19T04:50:42Z")

</div>

e$BLZB\<$G$9!#e(B

On Mon, 18 Feb 2008 17:34:13 +0900  
Martin D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> e$B!V1Q8l$G$b!W$H8@$o$l$k$H!";22C\<T$N0l?M$H$7$F@UG$$re(B  
> e$B46$8$5$;$i$l$F$7$^$$$^$7$?e(B ;-).

e$B$9$\_$^$;$s!#$“$^$j%3%”%A!\<%`$N%a%s%P!\<$NJ}!9$K=E2Y$rGXIi$o$;$k$D$b$j$Oe(B  
e$B$J$$$N$G$9$,!“\<BAu$5$l$k$^$GF|K\8l$G$O\>pJs$rM}2r$G$-$J$$?M$?$A$,CN$k$3e(B  
e$B$H$,$G$-$J$$$N$O$A$g$C$HLdBj$”$j$G$O$J$$$+$H;W$$$^$7$?$N$G!#e(B

> e$B$&$^$/9T$1$P:#F|$d$j$^$9!#e(B e$B59$7$/$\*4j$$$7$^$9!#e(B Martin.

e$B$\*\<j?t$+$1$^$7$?!#e(B  
e$B$"$j$,$H$&$4$6$$$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [February 18, 2008, 9:54am UTC](https://www.ruby-forum.com/t/ruby-m17n-b2q5d-n5d-vo-b/129352/8 "2008-02-18T09:54:30Z")

</div>

e$B@.@%$G$9!#e(B

> At 16:49 08/02/18, KIMURA Koichi wrote:
> 
> > e$B$3$l$i$N8!F$%"%$%F%`$N\>pJs$r1Q8l$GN.$7$?$j$O$7$J$$$N$G$7$g$&$+e(B?  
> > #e$B$\*A0$,$d$l!"$H$$$&$3$H$J$iEXNO$7$^$9$,!#e(B

e$B3N$+$K$=$&$G$9$M!"$4;XE&$4$b$C$H$b!#e(B

Martin D. wrote:

> e$B!V1Q8l$G$b!W$H8@$o$l$k$H!";22C\<T$N0l?M$H$7$F@UG$$re(B  
> e$B46$8$5$;$i$l$F$7$^$$$^$7$?e(B ;-).
> 
> e$B$&$^$/9T$1$P:#F|$d$j$^$9!#e(B e$B59$7$/$\*4j$$$7$^$9!#e(B Martin.

e$B=u$+$j$^$9!"$h$m$7$/$\*4j$$$7$^$9!#e(B
