# \[Bug #3360\] rdoc fails when including BOM

**URL:** <https://www.ruby-forum.com/t/bug-3360-rdoc-fails-when-including-bom/189325>\
**Category:** Development\
**Created:** [May 28, 2010, 7:18pm UTC](https://www.ruby-forum.com/t/bug-3360-rdoc-fails-when-including-bom/189325 "2010-05-28T19:18:12Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![white\_leaf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/b5e925/32.png) [@white\_leaf](https://www.ruby-forum.com/u/white_leaf)\
**Post date:** [May 28, 2010, 7:18pm UTC](https://www.ruby-forum.com/t/bug-3360-rdoc-fails-when-including-bom/189325/1 "2010-05-28T19:18:12Z")

</div>

Bug #3360: rdoc fails when including BOM  
[http://redmine.ruby-lang.org/issues/show/3360](http://redmine.ruby-lang.org/issues/show/3360)

e$B5/I\<\<Te(B: white leaf  
e$B%9%F!\<%?%9e(B: Open, e$BM%@hEYe(B: Normal  
ruby -v: ruby 1.9.3dev (2010-05-28 trunk 28052) [i386-cygwin]

whiteleaf e$B$H?=$7$^$9!#e(B

BOM e$B$r4^$`%U%!%$%k$re(B rdoc e$B$K$+$1$k$H=hM}$,8G$^$j$^$9!#e(B  
rdoc e$B$,e(B BOM  
e$B$r8+$F$J$$$;$$$J$N$G!"0J2\<$N%Q%C%A$G$J$\*$j$^$7$?!#e(B

e$B!&e(B":bom|utf-8" e$B%\*%W%7%g%s$r;H$C$F$$$J$$$N$Oe(B 1.8  
e$B$N$?$a$He(B  
e$B!!7k6Ie(B ASCII-8BIT e$B$Ke(B force\_encoding  
e$B$7$J$$$H$$$1$J$$$?$a0UL#$,$J$$$+$i$G$9!#e(B  
e$B!!e(B(rdoc e$B$N%(%s%3!\<%G%#%s%0$re(B UTF-8 e$B$K$9$k$J$iJL$G$9$,e(B)  
e$B!&e(BUTF-8 e$B$Ne(B BOM e$B$7$+8+$F$$$J$$$N$Oe(B ruby  
e$B%9%/%j%W%H$K;H$o$J$$e(B(e$B;H$($J$$e(B)  
e$B!!$N$G0UL#$,$J$$$+$i$G$9!#e(B  
e$B!&e(Bencode  
e$B$7$F$k$N$OJ#?t$N%U%!%$%k$,0[$J$k%(%s%3!\<%G%#%s%0$r;H$C$F$$$k\>l9g$Ke(B  
e$B!!e(Bcharset e$B$H%(%s%3!\<%G%#%s%0$,0[$J$k2DG=@-$,$"$k$?$a$G$9!#e(B

# e$BM\>CL$G$9$,!"e(Bbom|utf-\*

e$B%\*%W%7%g%s$O%(%s%3!\<%G%#%s%0$,L$CN$N\>l9g$K$Oe(B

# e$B$[$H$s$I0UL#$,L5$$$J$"$H;W$$$^$7$?!#e(B

# Index: generator/template/darkfish/classpage.rhtml

— generator/template/darkfish/classpage.rhtml (e$B%j%S%8%g%se(B  
28052)  
+++ generator/template/darkfish/classpage.rhtml (e$B:n6H%3%T!\<e(B)  
@@ -1,4 +1,4 @@  
-\<?xml version="1.0" encoding="utf-8"?\>  
+\<?xml version="1.0" encoding="\<%= @options.charset %\>"?\>

 Index: rdoc.rb =================================================================== --- rdoc.rb (e$B%j%S%8%g%se(B 28052) +++ rdoc.rb (e$B:n6H%3%T!\<e(B) @@ -404,12 +404,17 @@ end

def read\_file\_contents(filename)

- utf8\_bom = [0xEF, 0xBB, 0xBF].pack(“C\*”)  
content = open filename, “rb” do |f| f.read end

- if content[0…2] == utf8\_bom then

- 

```
 content = content[3..-1]

```

- end  
if defined? Encoding then  
if /coding[=:]\s\*([^\s;]+)/i =~ content[%r"\A(?:#!._\n)?._\n"]  
if enc = ::Encoding.find($1)  
content.force\_encoding(enc)

- 

```
     content.encode!(@options.charset)
   end
 end

```

end

---

<div class="post-metadata">

**Author:** ![white\_leaf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/b5e925/32.png) [@white\_leaf](https://www.ruby-forum.com/u/white_leaf)\
**Post date:** [May 29, 2010, 5:07am UTC](https://www.ruby-forum.com/t/bug-3360-rdoc-fails-when-including-bom/189325/2 "2010-05-29T05:07:35Z")

</div>

e$B%A%1%C%He(B #3360 e$B$,99?7$5$l$^$7$?!#e(B (by Nobuyoshi N.)

e$B%9%F!\<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B  
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

This issue was solved with changeset r28062.  
white, thank you for reporting this issue.  
Your contribution to Ruby is greatly appreciated.  
May Ruby be with you.

* * *

[http://redmine.ruby-lang.org/issues/show/3360](http://redmine.ruby-lang.org/issues/show/3360)

---

<div class="post-metadata">

**Author:** ![white\_leaf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/b5e925/32.png) [@white\_leaf](https://www.ruby-forum.com/u/white_leaf)\
**Post date:** [May 29, 2010, 6:49am UTC](https://www.ruby-forum.com/t/bug-3360-rdoc-fails-when-including-bom/189325/3 "2010-05-29T06:49:59Z")

</div>

e$B1sF#$G$9!#e(B

2010e$BG/e(B5e$B7ne(B29e$BF|e(B12:07 Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> This issue was solved with changeset r28062.

Eric e$B$rDL$5$:$KD\>$7$F$$$?$@$$$F$7$^$C$?$h$&$G$9$,!"!Ve(Bhtml  
e$B=PNO$Ne(B  
charset e$B;XDj$,L5;k$5$l$F$$$k!W$NJ}$bD\>$7$F$$$?$@$1$^$9$G$7$g$&$+!#e(B

diff --git a/lib/rdoc/generator/template/darkfish/index.rhtml  
b/lib/rdoc/generator/template/darkfish/index.rhtml  
index e853235…8dad4f4 100644  
— a/lib/rdoc/generator/template/darkfish/index.rhtml  
+++ b/lib/rdoc/generator/template/darkfish/index.rhtml  
@@ -1,4 +1,4 @@  
-\<?xml version="1.0" encoding="UTF-8"?\>  
+\<?xml version="1.0" encoding="\<%= @options.charset %\>"?\>

diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb  
index 3c08b5e…7f41163 100644  
— a/lib/rdoc/rdoc.rb  
+++ b/lib/rdoc/rdoc.rb  
@@ -414,6 +414,7 @@ The internal error was:  
if enc ||= (Encoding::UTF\_8 if utf8)  
content.force\_encoding(enc)  
end

- 

```
 content.encode!(@options.charset)

```

end

content

---

<div class="post-metadata">

**Author:** ![white\_leaf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/b5e925/32.png) [@white\_leaf](https://www.ruby-forum.com/u/white_leaf)\
**Post date:** [May 29, 2010, 5:37pm UTC](https://www.ruby-forum.com/t/bug-3360-rdoc-fails-when-including-bom/189325/4 "2010-05-29T17:37:17Z")

</div>

whiteleaf e$B$G$9!#e(B

–charset e$B%\*%W%7%g%s$O!Ve(Bhtml e$B$Ne(B charset  
e$B$r;XDj$9$k!W$H$$$&2r\<a$G$9$H!“e(B  
encode e$B$7$J$$$[$&$,@5$7$$5sF0$H$$$($J$/$b$J$$$G$9$,!”$d$C$Q$je(B  
2e$B$D0J\>e$N0[$J$k%(%s%3!\<%G%#%s%0$N%U%!%$%k$rBP\>]$K$9$k\>l9g$Oe(B  
charset e$B$HCf?H$N%(%s%3!\<%G%#%s%0$OB7$($F$[$7$$$H$3$m$G$9!#e(B

e$B$=$l$H1sF#$5$s$N%Q%C%A$G$9$H!“e(B  
ASCII-8BIT e$B$N%G!\<%?$re(B encode  
e$B$7$F$7$^$&2DG=@-$,$”$ke(B(Encoding::UndefinedConversionError)  
e$B$N$G!"e(Bforce\_encoding e$B$r$7$?\>l9g$N$\_e(B encode  
e$B$9$k$Y$-$G$9!#e(B  
e$B!J;d$N%Q%C%A$G$O$=$&=hM}$7$F$$$?$O$:$G$9!Ke(B

---

<div class="post-metadata">

**Author:** ![white\_leaf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/b5e925/32.png) [@white\_leaf](https://www.ruby-forum.com/u/white_leaf)\
**Post date:** [May 29, 2010, 6:11pm UTC](https://www.ruby-forum.com/t/bug-3360-rdoc-fails-when-including-bom/189325/5 "2010-05-29T18:11:49Z")

</div>

e$B$J$+$@$G$9!#e(B

At Sun, 30 May 2010 00:36:49 +0900,  
whiteleaf wrote in [ruby-dev:41460]:

> –charset e$B%\*%W%7%g%s$O!Ve(Bhtml e$B$Ne(B charset e$B$r;XDj$9$k!W$H$$$&2r\<a$G$9$H!“e(B  
> encode e$B$7$J$$$[$&$,@5$7$$5sF0$H$$$($J$/$b$J$$$G$9$,!”$d$C$Q$je(B  
> 2e$B$D0J\>e$N0[$J$k%(%s%3!\<%G%#%s%0$N%U%!%$%k$rBP\>]$K$9$k\>l9g$Oe(B  
> charset e$B$HCf?H$N%(%s%3!\<%G%#%s%0$OB7$($F$[$7$$$H$3$m$G$9!#e(B

e$B$=$N$X$s$,3N?.$,$J$+$C$?$3$H$b$"$j!"JL$Ne(Bissuee$B$H9M$($F$=$N$^$^$Ke(B  
e$B$7$^$7$?!#e(B

> e$B$=$l$H1sF#$5$s$N%Q%C%A$G$9$H!“e(B  
> ASCII-8BIT e$B$N%G!\<%?$re(B encode e$B$7$F$7$^$&2DG=@-$,$”$ke(B(Encoding::UndefinedConversionError)  
> e$B$N$G!"e(Bforce\_encoding e$B$r$7$?\>l9g$N$\_e(B encode e$B$9$k$Y$-$G$9!#e(B  
> e$B!J;d$N%Q%C%A$G$O$=$&=hM}$7$F$$$?$O$:$G$9!Ke(B

BOMe$B$be(Bmagic  
commente$B$b$J$$\>l9g$O!"e(BUS-ASCIIe$B$H$7$F=hM}$9$Y$-$G$7$g$&!#e(B

diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb  
index 3c08b5e…d605a26 100644  
— a/lib/rdoc/rdoc.rb  
+++ b/lib/rdoc/rdoc.rb  
@@ -411,9 +411,8 @@ The internal error was:  
if /coding[=:]\s\*([^\s;]+)/i =~ content[%r"\A(?:#!._\n)?._\n"]  
enc = ::Encoding.find($1)  
end

- 

```
 if enc ||= (Encoding::UTF_8 if utf8)

```

- 

```
   content.force_encoding(enc)

```

- 

```
 end

```

- 

```
 enc ||= (utf8 ? Encoding::UTF_8 : Encoding::US_ASCII)

```

- 

```
 content.encode!(@options.charset, enc)

```

end

content

---

<div class="post-metadata">

**Author:** ![white\_leaf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/b5e925/32.png) [@white\_leaf](https://www.ruby-forum.com/u/white_leaf)\
**Post date:** [May 28, 2010, 9:43pm UTC](https://www.ruby-forum.com/t/bug-3360-rdoc-fails-when-including-bom/189325/6 "2010-05-28T21:43:59Z")

</div>

e$B1sF#$G$9!#e(B

2010e$BG/e(B5e$B7ne(B29e$BF|e(B2:17 white leaf [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> BOM e$B$r4^$`%U%!%$%k$re(B rdoc e$B$K$+$1$k$H=hM}$,8G$^$j$^$9!#e(B  
> rdoc e$B$,e(B BOM e$B$r8+$F$J$$$;$$$J$N$G!"0J2\<$N%Q%C%A$G$J$\*$j$^$7$?!#e(B

e$B$"$j$,$H$&$4$6$$$^$9!#e(B  
e$B:F8=$7$^$7$?!#$^$?!"D:$$$?%Q%C%A$GD\>$k$3$H$r3NG’$7$^$7$?!#e(B

> e$B!&e(B":bom|utf-8" e$B%\*%W%7%g%s$r;H$C$F$$$J$$$N$Oe(B 1.8 e$B$N$?$a$He(B  
> e$B7k6Ie(B ASCII-8BIT e$B$Ke(B force\_encoding e$B$7$J$$$H$$$1$J$$$?$a0UL#$,$J$$$+$i$G$9!#e(B  
> (rdoc e$B$N%(%s%3!\<%G%#%s%0$re(B UTF-8 e$B$K$9$k$J$iJL$G$9$,e(B)  
> e$B!&e(BUTF-8 e$B$Ne(B BOM e$B$7$+8+$F$$$J$$$N$Oe(B ruby e$B%9%/%j%W%H$K;H$o$J$$e(B(e$B;H$($J$$e(B)  
> e$B$N$G0UL#$,$J$$$+$i$G$9!#e(B  
> e$B!&e(Bencode e$B$7$F$k$N$OJ#?t$N%U%!%$%k$,0[$J$k%(%s%3!\<%G%#%s%0$r;H$C$F$$$k\>l9g$Ke(B  
> charset e$B$H%(%s%3!\<%G%#%s%0$,0[$J$k2DG=@-$,$"$k$?$a$G$9!#e(B

e$BMW$9$k$K!"$3$N%Q%C%A$Oe(B 2 e$B$D$NLdBj$r=$@5$7$F$$$^$9$h$M!#e(B

- BOM e$B$,$"$k$H%Q!\<%9$,8G$^$ke(B
- html e$B=PNO$Ne(B charset e$B;XDj$,L5;k$5$l$F$$$ke(B

e$B@.@%$5$s!"e(BM17N  
e$B4X78$J$N$G%Q%C%A$,@5$7$$$+8+$F$$$?$@$1$^$9$+!#e(B  
e$B@5$7$$$h$&$J$ie(B Eric e$B$KE\>Aw$7$^$9!#e(B

# e$B%A%1%C%H$rK]Lu$7$F$/$l$k?M$O$$$J$$$+$J$"!D!D!#e(B

---

<div class="post-metadata">

**Author:** ![white\_leaf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/b5e925/32.png) [@white\_leaf](https://www.ruby-forum.com/u/white_leaf)\
**Post date:** [May 29, 2010, 7:55pm UTC](https://www.ruby-forum.com/t/bug-3360-rdoc-fails-when-including-bom/189325/7 "2010-05-29T19:55:25Z")

</div>

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

(2010/05/30 1:11), Nobuyoshi N. wrote:

> At Sun, 30 May 2010 00:36:49 +0900,  
> whiteleaf wrote in [ruby-dev:41460]:
> 
> > –charset e$B%\*%W%7%g%s$O!Ve(Bhtml e$B$Ne(B charset e$B$r;XDj$9$k!W$H$$$&2r\<a$G$9$H!“e(B  
> > encode e$B$7$J$$$[$&$,@5$7$$5sF0$H$$$($J$/$b$J$$$G$9$,!”$d$C$Q$je(B  
> > 2e$B$D0J\>e$N0[$J$k%(%s%3!\<%G%#%s%0$N%U%!%$%k$rBP\>]$K$9$k\>l9g$Oe(B  
> > charset e$B$HCf?H$N%(%s%3!\<%G%#%s%0$OB7$($F$[$7$$$H$3$m$G$9!#e(B
> 
> e$B$=$N$X$s$,3N?.$,$J$+$C$?$3$H$b$"$j!"JL$Ne(Bissuee$B$H9M$($F$=$N$^$^$Ke(B  
> e$B$7$^$7$?!#e(B

e$B$=$m$($FM\_$7$$$H$$$&F05!$OM}2r$G$-$^$9!#e(B

HTML e$B$Ne(B charset e$B$H!"e(BRuby e$B$G$Ne(B encoding  
e$B$,0lCW$9$k$H$O8B$i$J$$$s$G$9$h$M!#e(B  
cf. Windows-31J, CP51932, Windows-1252

> > e$B$=$l$H1sF#$5$s$N%Q%C%A$G$9$H!“e(B  
> > ASCII-8BIT e$B$N%G!\<%?$re(B encode e$B$7$F$7$^$&2DG=@-$,$”$ke(B(Encoding::UndefinedConversionError)  
> > e$B$N$G!"e(Bforce\_encoding e$B$r$7$?\>l9g$N$\_e(B encode e$B$9$k$Y$-$G$9!#e(B  
> > e$B!J;d$N%Q%C%A$G$O$=$&=hM}$7$F$$$?$O$:$G$9!Ke(B
> 
> BOMe$B$be(Bmagic commente$B$b$J$$\>l9g$O!"e(BUS-ASCIIe$B$H$7$F=hM}$9$Y$-$G$7$g$&!#e(B

rdoc e$B$,=q$+$l$F$$$k$N$,e(B ruby e$B%9%/%j%W%H$J$i$P$=$l$Oe(B US-ASCII  
e$B$N$O$:$G$9!#e(B  
e$B$,!"$=$l$re(B UTF-8 e$B$H$7$F07$C$F$bJL$K;Y\>c$O$"$j$^$;$s!#e(B

rdoc e$B$,=q$+$l$F$$$k$N$,e(B rdoc  
e$B@lMQ%U%!%$%k$@$C$?$j!“JL$N2?$+$X$NKd$a9~$\_%G!\<%?$N\>l9g!“e(B  
e$B$=$l$Oe(B rdoc e$B$d$=$N%U%)!\<%^%C%H$N;v\>p$K0MB8$7$^$9!#$=$l$Oe(B  
Ruby M17N e$B$NH=CG$9$k;vJA$G$Oe(B  
e$B$”$j$^$;$s!#$=$l$i$,e(B UTF-8  
e$B$G$”$k$Y$-$@$HH=CG$9$k$J$i$P$3$l$bLdBj$"$j$^$;$s!#e(B

---

<div class="post-metadata">

**Author:** ![white\_leaf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/b5e925/32.png) [@white\_leaf](https://www.ruby-forum.com/u/white_leaf)\
**Post date:** [May 29, 2010, 7:43pm UTC](https://www.ruby-forum.com/t/bug-3360-rdoc-fails-when-including-bom/189325/8 "2010-05-29T19:43:43Z")

</div>

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

(2010/05/29 2:17), white leaf wrote:

> e$B!&e(BUTF-8 e$B$Ne(B BOM e$B$7$+8+$F$$$J$$$N$Oe(B ruby e$B%9%/%j%W%H$K;H$o$J$$e(B(e$B;H$($J$$e(B)  
> e$B!!$N$G0UL#$,$J$$$+$i$G$9!#e(B

rdoc e$B$N=q$+$l$F$$$k%U%!%$%k$,e(B ruby  
e$B%9%/%j%W%H$@$H$O8B$i$J$+$C$?$h$&$J!#e(B

> e$B!&e(Bencode e$B$7$F$k$N$OJ#?t$N%U%!%$%k$,0[$J$k%(%s%3!\<%G%#%s%0$r;H$C$F$$$k\>l9g$Ke(B  
> e$B!!e(Bcharset e$B$H%(%s%3!\<%G%#%s%0$,0[$J$k2DG=@-$,$"$k$?$a$G$9!#e(B

e$B$3$l$,$G$-$F$J$$$N$O8=\>u$N;EMM$@$C$?$H;W$$$^$9!#e(B  
e$B$J$N$G!"$3$NItJ,$Oe(B feature e$B$G$9$M!#e(B

> # e$BM\>CL$G$9$,!"e(Bbom|utf-\* e$B%\*%W%7%g%s$O%(%s%3!\<%G%#%s%0$,L$CN$N\>l9g$K$Oe(B
> 
> # e$B$[$H$s$I0UL#$,L5$$$J$"$H;W$$$^$7$?!#e(B

e$B%(%s%3!\<%G%#%s%0$,L$CN$J\>l9g$N$?$a$NJ\*$G$OL5$$$N$GEvA3$G$9!#e(B
