현재 캐릭터셋 확인하기

mysql> show variables like 'c%';
+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | latin1                                 |
| character_set_connection | latin1                                 |
| character_set_database   | latin1                                 |
| character_set_filesystem | binary                                 |
| character_set_results    | latin1                                 |
| character_set_server     | latin1                                 |
| character_set_system     | utf8                                   |
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |
| collation_connection     | latin1_swedish_ci                      |
| collation_database       | latin1_swedish_ci                      |
| collation_server         | latin1_swedish_ci                      |
| completion_type          | 0                                      |
| concurrent_insert        | 1                                      |
| connect_timeout          | 10                                     |
+--------------------------+----------------------------------------+
14 rows in set (0.00 sec)


mysql> status
--------------
mysql  Ver 14.12 Distrib 5.0.67, for redhat-linux-gnu (x86_64) using readline 5.1

Connection id:          73
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.67-log Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 15 hours 27 min 55 sec

Threads: 1  Questions: 791  Slow queries: 0  Opens: 39  Flush tables: 1  Open tables: 34  Queries per second avg: 0.014
--------------

이런식으로 뜬다.

변경하기
vi /etc/my.cnf

[client]
default-character-set=euckr

[mysqld]
default-character-set=euckr
init_connect=SET collation_connection=euckr_korean_ci
init_connect=SET NAMES euckr
character-set-server=euckr
collation-server=euckr_korean_ci

[mysqldump]
default-character-set=euckr

[mysql]
default-character-set=euckr

euckr 및 euckr_korean_ci 를 원하는 해당 캐릭터셋으로 바꾸어주면 된다.

추가 및 변경 후, MySQL 을 재시작 해주어야 적용된다.

service mysqld restart

#include <stdio.h>
 
//using namespace std;
 
int main()
{
    int i,j,k,s,e,min,n=8;
    int path[8],path_cnt=0;
    // unconnect
    const int U=static_cast<unsigned int>(-1)/2;
    int data[8][8] = {
        {0,2,U,U,U,3,U,U},
        {2,0,4,1,U,U,U,U},
        {U,4,0,U,3,U,U,U},
        {U,1,U,0,3,U,2,U},
        {U,U,3,3,0,U,U,4},
        {3,U,U,U,U,0,6,U},
        {U,U,U,2,U,6,0,4},
        {U,U,U,U,4,U,4,0}};
    bool v[8];
    int distance[8],via[8];
 
    // 출발, 도착 정점
    s=0,e=7;
 
    // 초기화
    for(i=0;i<n;i++)
    {
        v[i]=false;
        distance[i]=U;
    }
    distance[s]=0;
 
    // 찾기
    for(i=0;i<n;i++)
    {
        min=U;
        for(j=0;j<n;j++)
        {
            if(v[j]==false && distance[j]<min)
            {
                k=j;
                min=distance[j];
            }
        }
        v[k]=true;
        if(min==U)
            break;
        for(j=0;j<n;j++)
        {
            if(distance[k]==U || data[k][j]==U)
                continue;
            if(distance[j]>distance[k]+data[k][j])
            {
                distance[j]=distance[k]+data[k][j];
                via[j]=k;
            }
        }
    }
    // 최단 비용
    printf("%d\n",distance[e]);
    // 최단 경로
    k=e;
    while(true)
    {
        path[path_cnt++]=k;
        if(k==s)
            break;
        k=via[k];
    }
    for(i=path_cnt-1;i>=1;i--)
        printf("%d -> ",path[i]);
    printf("%d\n",path[i]);
 
    return 0;
} 


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 150
FILE *fp,*fp1;
main(){
	int i,j,k,m,n,s_top,len,o_i;
	char stack[MAX];
	char output[MAX];
	int imp[MAX];
	char sik[MAX];
	
	fp=fopen("input.txt","r");
	fp1=fopen("output.txt","w");

	fscanf(fp,"%s",sic);
	len=strlen(sic);

	for(i=(int)'0';i<=(int)'9';i++)
		imp[i]=5;
	imp[(int)'(']=3;
	imp[(int)'<']=2;
	imp[(int)'>']=2;
	imp[(int)'%']=1;
	imp[(int)')']=0;
		
	for(i=0,s_top=-1,o_i=-1;i<len;i++){
		if(imp[(int)sik[i]]==5)
			output[++o_i]=sik[i];
		else{
			switch(imp[(int)sik[i]]){
			case 3:

				stack[++s_top]=sik[i];
				break;
			case 2:
				if(imp[(int)stack[s_top]]>=imp[(int)sik[i]]){
					while(imp[(int)stack[s_top]]>=imp[(int)sik[i]])
						output[++o_i]=stack[s_top--];
				}
				else
					stack[++s_top]=sik[i];
				break;
			case 1:
				if(imp[(int)stack[s_top]]>=imp[(int)sik[i]]){
					while(imp[(int)stack[s_top]]>=imp[(int)sik[i]])
						output[++o_i]=stack[s_top--];
				}
				else
					stack[++s_top]=sik[i];
				break;






	
	fprintf(fp1,"Impossible\n");

	fclose(fp);
	fclose(fp1);
}

+ Recent posts