huji
asked on
LCID and CODEPAGE problem
Hi
I've got a problem with Codepage, LCID, and related matters. I highly appreciate any help. The solution is not that urgent in respect to time, but is very important to me in general.
My server runs IIS 5 on WinXP. Although Farsi is installed on the server, I have set Windows locale to English (United States).
What I want to do is to store the date of page visits in an Access 2003 database. The Access DB file is created on the same machine.
Now, what I need is the date is stored in ENGLISH locale format not other.
When I run this:
<%
response.Write now()
%>
it gives me such:
8/13/2004 10:53:40 PM
and when I run this:
<%
session.LCID = 1065
response.Write now()
%>
,where 1065 is the locale ID for Farsi, I get this:
2004/08/13 10:53:52 ب.ظ
(The last two characters mean just the same as PM. You may see them odd.)
When I run this:
<%
session.LCID = 1033
response.Write now()
%>
,obviuosly, I get the English date format again:
8/13/2004 10:54:05 PM
Now the problem: I use such code (simplified) to store the date in the db:
<%
dim conn, recset, connStr, SqlStr
connStr = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & server.MapPath("db1.mdb")
set conn = server.CreateObject("ADODB .connectio n")
conn.open connStr
set recset = server.CreateObject("ADODB .recordset ")
SqlStr = "SELECT x FROM Table1"
recset.open SqlStr,conn,,3
'while not recset.eof
' response.write recset.Fields("x").value & "<br />"
' recset.movenext
'wend
recset.AddNew
recset.Fields("x")=now()
recset.update
response.write "<br />" & now()
recset.close
set recset = nothing
set conn = nothing
%>
This saves the date in Farsi locale format. Even if I set the locale ID to 1033 (or anything, no matter what!) it continues saving that in Farsi format.
I guessed this is because incorrect Codepage format. I tried several possible codepages, from 1252 to 65001 (UTF-8), but no way!
If we accept that now() function returns a string, then this string must be the same, when it is used in response.write, and when it is part of a SQL Querry, but it is not in reality!
Any help is highly appreciated.
Huji
By the way, it took me a long time to know that Farsi locale is 1065, and I am looking for a complete list of locale IDs, and codepages, for different languages. This can be helped too.
I've got a problem with Codepage, LCID, and related matters. I highly appreciate any help. The solution is not that urgent in respect to time, but is very important to me in general.
My server runs IIS 5 on WinXP. Although Farsi is installed on the server, I have set Windows locale to English (United States).
What I want to do is to store the date of page visits in an Access 2003 database. The Access DB file is created on the same machine.
Now, what I need is the date is stored in ENGLISH locale format not other.
When I run this:
<%
response.Write now()
%>
it gives me such:
8/13/2004 10:53:40 PM
and when I run this:
<%
session.LCID = 1065
response.Write now()
%>
,where 1065 is the locale ID for Farsi, I get this:
2004/08/13 10:53:52 ب.ظ
(The last two characters mean just the same as PM. You may see them odd.)
When I run this:
<%
session.LCID = 1033
response.Write now()
%>
,obviuosly, I get the English date format again:
8/13/2004 10:54:05 PM
Now the problem: I use such code (simplified) to store the date in the db:
<%
dim conn, recset, connStr, SqlStr
connStr = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & server.MapPath("db1.mdb")
set conn = server.CreateObject("ADODB
conn.open connStr
set recset = server.CreateObject("ADODB
SqlStr = "SELECT x FROM Table1"
recset.open SqlStr,conn,,3
'while not recset.eof
' response.write recset.Fields("x").value & "<br />"
' recset.movenext
'wend
recset.AddNew
recset.Fields("x")=now()
recset.update
response.write "<br />" & now()
recset.close
set recset = nothing
set conn = nothing
%>
This saves the date in Farsi locale format. Even if I set the locale ID to 1033 (or anything, no matter what!) it continues saving that in Farsi format.
I guessed this is because incorrect Codepage format. I tried several possible codepages, from 1252 to 65001 (UTF-8), but no way!
If we accept that now() function returns a string, then this string must be the same, when it is used in response.write, and when it is part of a SQL Querry, but it is not in reality!
Any help is highly appreciated.
Huji
By the way, it took me a long time to know that Farsi locale is 1065, and I am looking for a complete list of locale IDs, and codepages, for different languages. This can be helped too.
ASKER
And finally I found the best resource for LCIDs. So please focus to the main question.
Thanks
Huji
(Here it is for others reference: http://www.microsoft.com/globaldev/reference/lcid-all.mspx)
Thanks
Huji
(Here it is for others reference: http://www.microsoft.com/globaldev/reference/lcid-all.mspx)
ASKER
I would be a little happy if I know that ONE person has understood my question, even if not known the answer yet!
Waiting
huji
Waiting
huji
ASKER
Hey guys, I have to mention that I have found at least to ways that can solve the issue:
1)If I pass CStr(now()) to the DB instead of the now() itself, this will solve the issue.
2)If I change the data type of the x column in my DB from Text to Date/Time, this again solves the issue.
But the main question still remains:
When I set the LCID to 1033 (English), why is the value of now() still in Farsi format?
Regards,
Huji
1)If I pass CStr(now()) to the DB instead of the now() itself, this will solve the issue.
2)If I change the data type of the x column in my DB from Text to Date/Time, this again solves the issue.
But the main question still remains:
When I set the LCID to 1033 (English), why is the value of now() still in Farsi format?
Regards,
Huji
First, I should say that the most reliable way is to enter the date in VBLongDate format:
http://www.devguru.com/Technologies/vbscript/quickref/formatdatetime.html
The next most reliable way is to use the yyy/mm/dd format.
Let me reread this whole thread when I get a few minutes so that we can figure out why this is happening.
ftB
http://www.devguru.com/Technologies/vbscript/quickref/formatdatetime.html
The next most reliable way is to use the yyy/mm/dd format.
Let me reread this whole thread when I get a few minutes so that we can figure out why this is happening.
ftB
ASKER
Thanks Fritz
Huji
Huji
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Good explanation. That's just what I needed.
Huji
Huji
Glad to have helped,
FtB
FtB
ASKER
Huji