jsp 한글 깨짐 , 자바 한글 깨짐

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

asp 한글 깨짐

<%@Language="VBScript" CODEPAGE="65001" %>
<%

  Response.CharSet="utf-8"
  Session.codepage="65001"
  Response.codepage="65001"
  Response.ContentType="text/html;charset=utf-8"
%>

파이썬 Matplotlib 한글 깨짐 , 파이썬 한글 깨짐, matplotlib 한글 깨짐

import matplotlib.pyplot as plt
from matplotlib import rc
import seaborn as sns
%matplotlib inline

rc('font', family='AppleGothic')
plt.rcParams['axes.unicode_minus'] = False

 

 

 

 

1. 샘플 페이지 생성

'regist.asp' : 사용자에게 정보를 입력 받을 페이지
'regist_ok.asp' : 입력된 받아을 받아 화면에 출력할 페이지

 

regist.asp

<%@Language="VBScript" CODEPAGE="65001" %>
<%

  Response.CharSet="utf-8"
  Session.codepage="65001"
  Response.codepage="65001"
  Response.ContentType="text/html;charset=utf-8"
%>
<HTML>
  <HEAD>
    <TITLE>사용자로부터 정보 얻기</TITLE>
  </HEAD>
  <BODY>
    <FORM NAME=frmInfo METHOD=POST ACTION=regist_ok.asp>
      이름 : <INPUT TYPE=TEXT NAME=txtName SIZE=15><BR>
      Email : <INPUT TYPE=TEXT NAME=txtEmail SIZE=30><BR>
      전화번호 : <INPUT TYPE=TEXT NAME=txtPhone SIZE=20><BR>
      <INPUT TYPE=SUBMIT VALUE='전송'>
    </FORM>
  </BODY>
</HTML>

 

regist_ok.asp

<%@Language="VBScript" CODEPAGE="65001" %>
<%

  Response.CharSet="utf-8"
  Session.codepage="65001"
  Response.codepage="65001"
  Response.ContentType="text/html;charset=utf-8"
%>
<%
  DIM strName, strEmail, strPhone

  strName = Request.Form("txtName")
  strEmail = Request.Form("txtEmail")
  strPhone = Request.Form("txtPhone")

  Response.Write "이름은 = " & strName & "<BR>"
  Response.Write "Email은 = " & strEmail & "<BR>"
  Response.Write "전화번호는 = " & strPhone & "<BR>"
%>

 

localhost/tree/regist.asp 에 접속

전송을 누르면 HTML 폼에 의해 regist_ok.asp로 리다이렉트

 

1. UCASE, LCASE

Uppercase, Lowercase로 변환

 

2. LEN

문자열 길이 반환

 

3. LEFT, RIGHT, MID : 제로베이스가 아니다!!

인덱스 기준으로 문자열을 추출

strTest = "Welcome to Dukyoung.net"

LEFT(strTest, 7) = "Welcome"
RIGHT(strTest, 12) = "Dukyoung.net"
MID(strTest, 4, 7) = "come to"

 

4. INSTR, INSTRREV : 제로베이스가 아니다!!

특정 문자열의 인덱스를 추출

strTest = "내가 그린 기린 그린 그림은 잘 그린 기린 그린 그림이다"

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
                 

 

INSTR(strTest, "그린") = 4
INSTR(5, strTest, "그린") = 10          // 5번째부터 시작해서 strTest에서 "그린"이란 문자열의 인덱스를 추출.

INSTRREV(strTest, "그린") = 25        // 뒤에서부터 "그린"을 찾는다.
INSTRREV(strTest, "그린", 24) = 19   // 24번째부터 시작해서 strTest에서 "그린"이란 문자열을 뒤에서부터 찾는다.

 

5. LTRIM, RTRIM, TRIM

공백 제거

 

6. REPLACE

strBefore = "I like you.. Do you like me?"
REPLACE (strBefore, "like", "love") = "I love you.. Do you love me?"

 

7. SPLIT

strTest = "김덕영,김태영,윤영지,장경수"
DIm arrName (3)                   // 이 부분이 좀 특이하다. 3칸 배열이 아니라 0~3짜리 4칸 배열이다!
arrName = SPLIT(strTest, ",")

arrName(0) = "김덕영"
arrName(1) = "김태영"
arrName(2) = "윤영지"
arrName(3) = "장경수"

 

 

 

서버쪽을 다음과 같이 고친다.

app.use(express.static(__dirname + '/public'));

 

따라서 express와 app을 분리시키고 static 경로를 추가한다.

기존

var app = require('express')();

 

수정

var express = require('express');
var app = express();
app.use(express.static('local 디렉토리' + '/'));

 

1. 정수

Byte < Integer < Long

 

2. 실수

Single < Double

 

3. 통화

Currency (음수 포함)

 

5. 문자열 " "

 

6. Boolean

Boolean : True, False만을 값으로 갖는다. 정수형으로 표현시 False = 0, True = 0이 아닌 다른 수이다.

 

7. 날짜 서브 타입

날짜의 앞 뒤를 #로 감싼다.

#10/27/2020#              2020년 10월 27일

 

8. 그 외 서브 타입

Empty : 타입 O, 값 X
Null : 타입 X, 값 X

 

9. 변환 함수

1 ) CByte, CInt, CLng, CSng, CDbl, CCur, CStr : C가 붙은 것들은 형변환(Casting, Conversion)

차례대로 Byte, Integer, Long, Single, Double, Currency, String로 형변환하는 함수다.

 

2 ) Asc, AscB, AscW

ANSI(안시)의 코드값을 반환. AscB : 바이트, AscW : 32비트 유니코드

i.e. Asc("A") = 65, Asc("a") = 97

 

3 ) Chr, ChB, ChW

Asc 함수의 반대.

Chr (65) = "A", Chr(97) = "a"

 

4 ) CBool

i.e. CBool(0) = False, CBool(1) = True
     CBool("K" = "K") = True

 

5 ) Hex, Oct, Sgn

Hex : 10진수 -> 16진수로 변환
Oct : 10진수 -> 8진수로 변환

양수, 0, 음수를 반환
Sgn(20.2) = 1
Sgn(0) = 0
Sgn (-11) = -1

 

 

Dim : 변수를 선언. (예: Dim strName, Dim strName (5) : 배열로 선언, 0~5인덱스인 '6칸' 배열이다) (dimension의 약자)

Set : 객체를 생성. (예:  Set rs = Server.CreateObject("ADODB.RecordSet")) 객체는 다 쓰고 메모리에서 해제하는 것이 중요하다.

Dim myPhone
Set myPhone = Server.CreateObject("Telephone.Headphone")

myPhone.color = "black"
myPhone.number = "010-1234-5678"

myPhone.call("02-000-9876")
myPhone.hangup()

Set myPhone = Nothing		// 객체를 메모리에서 해제.(더이상 사용하지 않을 때)

 

IF ~ THEN 샘플

<%
IF intNumber = 1 THEN
    Response.Write "intNumber 에 들어있는 수는 1입니다!"
ELSEIF intNumber = 2 THEN
    Response.Write "intNumber 에 들어있는 수는 2입니다!"
ELSEIF intNumber = 3 THEN
    Response.Write "intNumber 에 들어있는 수는 3입니다!"
ELSE
    Response.Write "intNumber 에 들어있는 수는 1,2,3 이 아닌 다른 숫자입니다!"
END IF
%>

SELECT CASE 샘플

<%
SELECT CASE intNumber
CASE 1
    Response.Write "intNumber 에 들어있는 수는 1입니다!"
CASE 2
    Response.Write "intNumber 에 들어있는 수는 2입니다!"
CASE 3,4,5
    Response.Write "intNumber 에 들어있는 수는 3,4,5 중 하나입니다!"
CASE ELSE
    Response.Write "intNumber 에 들어있는 수는 1부터 5 사이의 정수가 아닙니다."
END SELECT
%>

FOR ~ NEXT

<%
DIM intLoop
FOR intLoop = 1 TO 10 STEP 1
    Response.write intLoop & "<BR>"
NEXT
%>

DO WHILE

<%
DIM intLoop
intLoop = 11
DO WHILE intLoop <= 20
    Response.write intLoop & "<BR>"
    intLoop = intLoop + 2
LOOP
%>

 

실습

<%@Language="VBScript" CODEPAGE="65001" %>
<%

  Response.CharSet="utf-8"
  Session.codepage="65001"
  Response.codepage="65001"
  Response.ContentType="text/html;charset=utf-8"
%>

<HTML>
<HEAD><title>main.asp</title>
</HEAD>
<BODY>
<P>&nbsp;</P>
가상 디렉토리입니다.<br />
<% for i = 1 to 3 step 1 %>
   Hello world! ASP <br>
<% next %>
<br />
<%
DIM intLoop
FOR intLoop = 1 TO 10 STEP 2
    Response.write intLoop & "<BR>"
NEXT
intLoop = 2
DO WHILE intLoop <= 10
    Response.write intLoop & "<BR>"
    intLoop = intLoop + 2
LOOP
%>
</BODY>
</HTML>

IIS(Internet Information Server) 설치하기

1 ) 제어판 > 모든 제어판 항목 > 프로그램 및 기능 > 'Windows 기능 켜기/끄기'

Classic ASP를 사용할 것이기 때문에 '인터넷 정보 서비스 > World Wide Web 서비스 > 응용 프로그램 개발 기능'에서 'ASP' 'ASP.NET 3.5' 'ISAPI 확장' 3개를 더 설치해준다. (Classic ASP는 'ASP'랑 'ISAPI 확장' 2개만 더 설치해주면 될 것 같은데 이렇게 해보니까 아래 IIS 관리자 설정에서 'Classic .NET AppPool'이 안 떠서 3.5까지 설치하니까 뜬다.')

2 ) IIS 관리자 설정

IIS 관리자 실행 > 좌측 연결 탭에서 '사이트 > Default Web Site' 클릭 > 우측 작업 탭에서 '고급 설정...'

'응용 프로그램 풀'을 DefaultAppPool > Classic .NET AppPool로 변경한다.

 

'ASP' > '기능 열기'

'부모 경로 사용'은 'True로, '브라우저에 오류 전송'은 'False'로 바꿔준다. 그리고 우측 탭에서 '적용'을 누른다.

 

좌측 탭에서 사이트 > Default Web Site 우클릭 > 가상 디렉터리 추가

아래와 같은 방식으로 만든다.

 

MS SQL 설치하기

DB야 자유롭게 설치해도 되겠지만... 여기서는 MS SQL로 설치한다.

개발자 버전을 설치하면 된다.

 

홈 디렉토리

'C:\inetpub\wwwroot'라는 홈 디렉토리가 있다.

이 디렉토리에 'test.asp'라는 이름으로 텍스트 문서를 저장해두면, 서버에 'test.html'을 요청하는 request가 들어오면 ASP.DLL이 'test.asp'를 해석해 response를 보낸다.

 

가상 디렉토리

문제는 하나의 서버에 홈 디렉토리가 하나라는 것이다. 즉, 서버 하나에 사이트를 하나만 띄울 수 있다. 따라서 가상 디렉토리를 이용해 이러한 문제를 해결할 수 있다.

IIS 관리자에서 만들면 되고, 방법은 위 설치 과정을 참고한다.

'실제 경로''서버 내 디렉토리'를 뜻하며, '별칭'에 해당하는 것은 톰캣 서버에서 'Context Path'에 해당한다. 'aspnet_client'는 홈 디렉토리다.

'C:\greendreamtrre'에 'main.asp'파일을 만들고 아래와 같이 저장한다.

<%@Language="VBScript" CODEPAGE="65001" %>
<%

  Response.CharSet="utf-8"
  Session.codepage="65001"
  Response.codepage="65001"
  Response.ContentType="text/html;charset=utf-8"
%>

<HTML>
<HEAD><title>main.asp</title>
</HEAD>
<BODY>
<P>&nbsp;</P>
가상 디렉토리입니다.<br />
<% for i = 1 to 3 step 1 %>
   Hello world! ASP <br>
<% next %>
</BODY>
</HTML>

위 코드에서 이 부분은 Visual Basic 스크립트 코드다.

<% for i = 1 to 3 step 1 %>
   Hello world! ASP <br>
<% next %>

 

URL에 아래와 같이 요청을 보내보자.

http://localhost/tree/main.asp

 

- 서버는 ASP 페이지를 그 확장자로 인식하며, ASP 페이지임이 확인되면 ASP.DLL을 거치게 한다.

- ASP.DLL을 거친 ASP파일은 사용자의 브라우저로 건네어질 때는 이미 원래의 ASP파일이 아니다.
  즉, 사용자는 결과 HTML코드만을 보게 되며, 원래의 ASP 소스코드는 결코 알 수가 없다.

- ASP 소스는 <% 로 시작하여 %> 로 끝난다. 즉, <% ~~~ %> 사이에 있지 않은 것은 HTML이다. 반대로 생각하면 HTML코드 안에 ASP 코드가 들어가있는 것이다. (생각해보니 jsp에서 HTML 코드 사이에 자바 코드 넣을 때도 <% ~~~ %> 사이에 넣었다...)

 

 

그 외 기타 설정

포트 변경 : 우측 작업 탭에서 '바인딩...'

 

홈 디렉토리 및 기본 서버 설정 : 우측 작업 탭에서 '기본 설정...'

 

ASP 한글 깨짐 asp 한글 깨짐

<%@Language="VBScript" CODEPAGE="65001" %>
<%

  Response.CharSet="utf-8"
  Session.codepage="65001"
  Response.codepage="65001"
  Response.ContentType="text/html;charset=utf-8"
%>

ASP란?

Active Server Pages로 1995년 말에 등장한 IIS(Internet Information Server)의  세 번째 버전으로 Microsoft사 NT 머신 IIS 3.0 이상에서만 동작하는 특별한 페이지이다.

 

ASP.NET Core 와의 비교

  Classic ASP ASP.NET Core
최초 릴리즈 1996년 2016년
최신 업데이트 3.0버전, 2000년 11월 3.1 버전, 2019년 12월
(5.0 버전 2020 말 예정)
개발 언어 Visual Basic Script C#, 등
구동 환경 Windows Only(IIS) Cross-Platform 지원 (Windows, Linux, Unix 등)
객체지향 여부 Not Object Oriented Object Oriented
디버깅 용의성 어려움 쉬움
성능 낮음 높음

 

MPA/SPA 관점에서의 비교

  Multi Page Application Single Page Application
UX 메뉴 이동 간 페이지 전환 (화면 깜빡임) 페이지 전환이 발생하지 않음
데이터/디자인의 분리 어려움 분리, 테스트 용이
디버깅 용의성 어려움 쉬움
초기 로딩 빠름 느림(데이터 외 기능요소를 초기에 다운로드)
객체지향 여부 Not Object Oriented Object Oriented

 

Classic ASP를 사용한다는 것은 MPA를 사용한다는 것이다. 따라서 사용자가 요청한 페이지는 서버의 ASP.DLL을 통해 해석되어 HTML 코드로 바뀌게 되고, 사용자는 그 HTML코드를 브라우저가 해석된 것을 보게 된다. 즉, 페이지 빌딩을 서버에서 만들어 클라이언트에 보내준다.

 

+ Recent posts