Pregunta
Me pueden ayudar por favor?En la página web, necesito imprimir esta:
equipo 1 vs equipo 2
equipo 3 vs equipo 4
equipo 5 vs equipo 6
el equipo 7 vs 8
Mi código:
<erl>
first_team_write(Head) ->
{ehtml,
%[{text,[], f("~p vs ", [Head])}]}. % try
[{p,[], [Val, " vs "]} || Val <- [Head]]}. % different
second_team_write(Head) ->
{ehtml,
%[{text,[], f("~p", Head)}, % ways
[{p,[], [Head]}, %
{p,[], []}]}.
write_teams([], Num) ->
Num;
write_teams([Head|Tail], Num) ->
if
(Num rem 2) /= 0 ->
first_team_write([Head]),
io:format("~p vs ", [Head]), %% debug
write_teams(Tail, Num+1);
(Num rem 2) == 0 ->
second_team_write(Head),
io:format("~p~n", [Head]), %% debug
write_teams(Tail, Num+1)
end.
out(A) ->
application:start(odbc),
ConnString =
%"Driver={MySQL ODBC 5.2 ANSI Driver};" ++
"Driver={MySQL ODBC 5.2 Unicode Driver};" ++
"Server=127.0.0.1;Database=erandom;" ++
"User=root;Password=1q2w3e;" ++
"Option=3;" ++
"CharSet=utf8;",
{ok, Conn} = odbc:connect(ConnString, []),
% Cyrillic results
Results = odbc:sql_query(Conn, "select team_name from teams where id in (select team_id from leagues where league_name = 'First League')"),
%{selected, [Selector], Results} = odbc:sql_query(Conn, "select team_name from teams where team_name in ('Sporting', 'Old School')"),
%{selected, [Selector], Results} = odbc:sql_query(Conn, "select team_name from teams where id in (select team_id from leagues where league_name = 'First League')"),
odbc:disconnect(Conn),
application:stop(odbc),
TeamList = element(3, Results),
{ehtml,
[{h4,[], "Пары этого тура:"},
{hr},
write_teams(TeamList,1)
]}.
</erl>
Resultado:Mi página web está en blanco.¿Qué estoy haciendo mal?Veo en la consola de depuración:
1>
=INFO REPORT==== 25-Feb-2014::23:08:27 ===
application: odbc
exited: stopped
type: temporary
1> {[208,159,209,128,208,190,208,188,208,181,209,130,208,181,208,185]} vs 1> {[208,161,208,145,208,162]}
1> {[208,158,208,187,208,184,208,188,208,191]} vs 1> {[208,159,209,128,208,190,208,179,209,128,208,181,209,129,209,129]}
1> {[208,164,208,154,32,208,148,209,142,208,182,208,184,208,189,208,176]} vs 1> {"Old school"}
1> {[208,161,208,191,208,176,209,128,209,130,208,176,208,186]} vs 1> {[208,160,208,190,209,130,208,190,209,128]}
1> {"Sporting"} vs 1> {[208,161,208,190,208,191,209,128,208,190,209,130,208,184,208,178,208,187,208, 181,208,189,208,184,208,181]}
Solución
Creo que no estás especificar el juego de caracteres correctamente en su respuesta HTTP.En primer lugar, ya se han Cirílico texto incrustado en su .el pian de la página, asegúrese de que su editor es el ahorro como UTF-8.Cómo lograr esto depende de su entorno de desarrollo y el editor, pero yo uso emacs, por lo que acabo de añadir el siguiente código HTML comentario a la parte superior de la .el pian de archivo:
<!-- -*- coding: utf-8 -*- -->
El siguiente problema es conseguir que el conjunto de caracteres establecido correctamente en las cabeceras HTTP de la respuesta.Para ello, establezca la Content-Type
cabecera de forma apropiada en su respuesta como esta:
[{header, {content_type, erase}},
{header, {content_type, "text/html; charset=UTF-8"}},
{ehtml,
[{h4,[], "Пары этого тура:"},
{hr},
write_teams(TeamList,1)
]}].
Tenga en cuenta que todo tipo de retorno es una lista de Erlang.La primera tupla en la lista, se borra el valor predeterminado Content-Type
encabezado que el Pian se aplica por defecto .el pian páginas.La segunda tupla en la lista especifica el valor correcto para Content-Type
incluyendo la codificación UTF-8 caracteres.El tercer elemento de la lista es el mismo ehtml
tupla especificado en el enunciado del problema anterior.
Por CIERTO, usted puede construir el Pian con UTF-8 como el conjunto de caracteres predeterminado por la ejecución del Pian configure
secuencia de comandos, como se muestra a continuación:
configure --with-defaultcharset=UTF-8
Después de eso, reconstruir el Pian con make
como de costumbre.Si usted hace esto, los dos tuplas para la configuración de la Content-Type
su respuesta no son necesarios, ya que la codificación UTF-8 sería el juego de caracteres por defecto para todas las respuestas.