# Invalid argument for file creating

**URL:** <https://www.ruby-forum.com/t/invalid-argument-for-file-creating/195540>\
**Category:** Rails\
**Created:** [September 24, 2010, 7:40pm UTC](https://www.ruby-forum.com/t/invalid-argument-for-file-creating/195540 "2010-09-24T19:40:18Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![daociyiyou](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/0ea827/32.png) [@daociyiyou](https://www.ruby-forum.com/u/daociyiyou)\
**Post date:** [September 24, 2010, 7:40pm UTC](https://www.ruby-forum.com/t/invalid-argument-for-file-creating/195540/1 "2010-09-24T19:40:18Z")

</div>

hi  
I use song\_title to creat a file named by song\_title.I have many song  
titles to create many files.but unfortunately,some of song titles  
contain special characters,such as [ ,which leads the following error:

##### 

Errno::EINVAL in Lyric spiderController#scrap\_one\_category  
Invalid argument - e:/rails/lyric/public/song/e/Energy/  
[ar:Energy.lrc

##### 

I use the following codes to create and write to files:

##### 

File.open(singer\_dir+"/"+UTF8\_TO\_GBK.iconv(song\_title)+".lrc",‘w’)do  
|f|

f.write(lyric\_initial\_data)

end

##### 

It is impossible to drop those special characters individually,and they  
are valid file names on my windows system when i manually create the  
file using them.  
I have used the CGI escape methods,but the resulted filename was not  
what i want.

how to keep those characters for file name,and prevent the error  
happens?

---

<div class="post-metadata">

**Author:** ![daociyiyou](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/0ea827/32.png) [@daociyiyou](https://www.ruby-forum.com/u/daociyiyou)\
**Post date:** [September 25, 2010, 4:42am UTC](https://www.ruby-forum.com/t/invalid-argument-for-file-creating/195540/2 "2010-09-25T04:42:36Z")

</div>

hi  
can you help me? thank you!

---

<div class="post-metadata">

**Author:** ![daociyiyou](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/0ea827/32.png) [@daociyiyou](https://www.ruby-forum.com/u/daociyiyou)\
**Post date:** [September 25, 2010, 10:23am UTC](https://www.ruby-forum.com/t/invalid-argument-for-file-creating/195540/3 "2010-09-25T10:23:07Z")

</div>

hi  
is there any method to do it? thank you!

---

<div class="post-metadata">

**Author:** ![daociyiyou](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/0ea827/32.png) [@daociyiyou](https://www.ruby-forum.com/u/daociyiyou)\
**Post date:** [September 25, 2010, 3:11pm UTC](https://www.ruby-forum.com/t/invalid-argument-for-file-creating/195540/4 "2010-09-25T15:11:05Z")

</div>

I don’t have any direct experience with this, but perhaps you could  
begin isolating the problem by trying to directly pass a hard-coded  
string as in  
File.open(“this\_is\_the\_title.lrc”,“w”),  
sidestepping the filename creation process.

---

<div class="post-metadata">

**Author:** ![daociyiyou](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/0ea827/32.png) [@daociyiyou](https://www.ruby-forum.com/u/daociyiyou)\
**Post date:** [September 25, 2010, 3:56pm UTC](https://www.ruby-forum.com/t/invalid-argument-for-file-creating/195540/5 "2010-09-25T15:56:47Z")

</div>

Phillip wrote:

> I don’t have any direct experience with this, but perhaps you could  
> begin isolating the problem by trying to directly pass a hard-coded  
> string as in  
> File.open(“this\_is\_the\_title.lrc”,“w”),  
> sidestepping the filename creation process.

Thank you,phillip.I am driven mad by those characters and encoding.
