Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

passarito

[Resolvido] IIS - separador decimal

Recommended Posts

passarito

Boas,

Estou a migrar um site para um novo servidor e estou-me a depara com um problema. O separador decimal é a virgula em vez do ponto o que me está a causar bastantes problemas uma vez que uso números decimais.

Em Javascript o separador decimal é o ponto, em VBScript o separador é a virgula e ainda não cheguei às BD's.

- Alterei o separador no painel de controlo / definições regionais do servidor;

- Alterei no Registry

- Testei o Globalzation / Culture

 

Tenho a ideia que a configuração deverá estar no IIS (ou não...) mas ainda não encontrei nada.

Alguém sabe dar alguma dica?

Edited by passarito
Tópico resolvido

Share this post


Link to post
Share on other sites
M6

Podes sempre ir ver as definições no servidor antigo.

Quanto à BD o separador decimal é sempre o ponto, o que podes mudar é a questão da formatação para display. É como nas datas, tens um inteiro que representa a data podes é vê-la em formatos diferentes.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
passarito

Obrigado.

A comparação é um pouco difícil, pois o antigo é um Windows 2000 Server e o novo é um Windows Server 2012 R2

Ainda assim coloquei as definições regionais tal e qual o antigo, verifiquei as chaves do registry e nada.

O mais interessante é que em javascript o isnan usa o ponto  e o isnumeric do vbscript usa a virgula como separador decimal exatamente na mesma página.

Uma vez que falas nas datas, ainda não testei isso....ui....

Share this post


Link to post
Share on other sites
M6

O Javascript usa o . como separador decimal, está-se a borrifar para os regional settings que o utilizador tem no PC, caso contrário teriam de implementar isso em todas as combinações de browsers vs sistemas operativos. Só mesmo a MS é que achava que ia dominar o mundo com o IE6 e os seus bugs é por isso achava boa idea essas discrepâncias ao nível da programação. É o equivalente a traduzirem as funções do Excel para Português, Espanhol, Alemão, etc. e depois ficarem admirados porque um documento em Alemão não funciona bem no Excel em Italiano... Enfim... Parolices à parte, vamos lá à vaca fria.

Eu diria que era algo para se resolver no Globalization/Culture, mas se já passaste por ai, creio que resta verificar os settings da definição da app no IIS em ambos os sistemas. Em especial os parâmetros da Pool ASP em que a app está a correr.

Em última instância pode-se implementar uma função que garanta a formatação correta, mas isso implica um trabalho de levantamento, desenvolvimento e testes para fazer todos os valores onde isso é necessário.

 

Quanto à bd, o problema poderá estar no mesmo local, mas isso, como te disse anteriormente, é uma questão de visualização do formato, mas poderás ter de passar pelo mesmo processo.

  • Vote 1

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
passarito

Bom dia,

Quanto à bd, só chegarei a esse problema depois de passar este, daí ainda não ter nada a apontar neste capitulo. provavelmente tenho de fazer o mesmo que faço para as datas, quando vai guardar tem de colocar os cardinais e trocar o dia com o mês. Nos dados tipo double (ou float) tem de trocar o ponto pela virgula ou vice-versa.

Mas estava interessado no que disseste no post atrás. Necessitava de o esmifrar um pouco mais.

Citação

Eu diria que era algo para se resolver no Globalization/Culture, mas se já passaste por ai, creio que resta verificar os settings da definição da app no IIS em ambos os sistemas. Em especial os parâmetros da Pool ASP em que a app está a correr.

Não sei se utilizei as melhores opções no Globalization/Culture. Eu coloquei "pt-pt". Será que tenho de colocar o "en-us"?

Onde é que estão os settings da definição da app no IIS?

Pecorri os parâmetros da Pool e não encontro nenhuma que me possa ajudar.

Share this post


Link to post
Share on other sites
passarito

Na continuação da minha epopeia, venho aqui dizer que aparentemente o problema está resolvido.

Então depois de muito pesquisar e tentar alterar definições no IIS, pois algo me dizia que era lá que estava o problema (e em parte estava) descobri o post de alguém que tocou na frida. A resolução dele passou por colocar na página algo que eu ´coloco em todas as minhas páginas mas com código diferente.

<%session.LCID = 127%>

Eu usava o código 2070 português de Portugal. Ao que parece, alguém muito entendido, em vez de criar um segundo código para o português de Portugal resolveu simplesmente mudar o funcionamento do código e o separador decimal passou de ponto para virgula independentemente do que estivesse definido nas definições regionais do servidor (outra ideia genial). Assim, por mais que eu mexesse no IIS as alterações nunca se iriam reflectir na página.

O código 127 refere-se a "invariant culture" isto é, sem cultura, et voilá, o ponto aparece com separador decimal.

Quem fez o post ainda diz que coloca também o código 127 no IIS dentro do separador ASP e no campo Locale ID [lcid]. Fiz a experiência em retirar a linha <%session.LCID = 127%> da página ASP e configurar o IIS para verificar se podia retirar a configuração em todas as minhas páginas, mas não deu resultado. Portanto, na minha opinião, e foi o que fiz, deixei o IIS/ASP/Locale ID [lcid]=0 e uso a configuração dentro da página.

Link para o post original: https://stackoverflow.com/questions/21674174/how-to-set-cultureinfo-to-invariantculture-classic-asp-vbscript

 

Não parei por aqui, e fiz mais testes, desta vez com a data. Esta aparecia-me mm/dd/aaaa o que não me agradou, fui à procura dos códigos lcid. Testei com alguns paises e descobi que os nossos amigos ingleses usam os formatos que necessito. Separador decimal com ponto e data dd/mm/aaaa.

Assim o código que uso é o 2057: <%session.LCID = 2057%>

Deixo ainda aqui 2 links para os diversos códigos lcid

Link 1:https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(VS.71).aspx

Link 2:http://www.livio.net/main/charset.asp

 

Por fim deixar uma nota de agradecimento ao @M6 que me indirectamente ajudou na resolução deste problema pois foi através das suas dicas que orientei a minha pesquisa e insisti o IIS e na Globalization/Culture.

 

Edited by passarito
  • Vote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.